Frage:
Was sind die Risiken, wenn Cookies nur gelöscht werden, anstatt sich abzumelden?
Joseph
2019-06-01 04:14:59 UTC
view on stackexchange narkive permalink

Ein typischer Webauthentifizierungsworkflow sieht folgendermaßen aus:

  1. Benutzer gibt seine Anmeldeinformationen an.
  2. Server überprüft Anmeldeinformationen.
  3. Wenn Anmeldeinformationen gültig sind
    • Server generiert ein Token.
    • Server behält dieses Token.
    • Server antwortet auf die Anmeldung mit diesem Token.
  4. Browser speichert Token.
  5. Browser stellt Anforderungen mit Token.
  6. Server validiert Token und reagiert entsprechend.
  7. ol>

    Normalerweise ist dies ein Token in einem Cookie gespeichert. Das Vorhandensein und die Gültigkeit des Tokens in einer Anforderung informiert den Server darüber, ob der Client, der die Anforderung stellt, authentifiziert ist. Kein Token, kein Eintrag, was praktisch gleichbedeutend damit ist, nicht angemeldet zu sein. Also ...

  • Kann ich mich einfach abmelden, indem ich Cookies lösche, anstatt mich abzumelden?
  • Was sind die Probleme beim Löschen von Cookies im Vergleich zum Klicken auf die Schaltfläche zum Abmelden?
Authentifizierungstoken können auch in sessionStorage oder localStorage gespeichert werden.Ich nehme an, Sie beabsichtigen, das auch zu löschen?
@meriton Ja, das Token wird vom Client gelöscht, wo immer es gespeichert ist, ohne die Abmeldeschaltfläche einer Site zu verwenden.
Warum nicht beides?Aus den in der Antwort von @Ghedipunk aufgeführten Gründen können Sie die Sitzung auf der Serverseite ungültig machen, indem Sie sich abmelden und anschließend Ihre Cookies löschen.
Nichts "garantiert" Ihnen, dass sich eine bestimmte Webanwendung beim Löschen Ihrer Cookies / Ihres Speichers ordnungsgemäß verhält.Möglicherweise wird eine Reihe wichtiger Logik ausgeführt, wenn Sie die Abmeldefunktion verwenden.Das wäre eine wirklich beschissene Web-App, und sie hätten wirklich einen so offensichtlichen Anwendungsfall sehen müssen.
Fünf antworten:
Ghedipunk
2019-06-01 04:23:41 UTC
view on stackexchange narkive permalink

Kann ich mich einfach abmelden, indem ich Cookies lösche, anstatt mich abzumelden?

Häufig ja, aus den Gründen, die Sie in Ihrer Frage angegeben haben: Ohne das Sitzungstoken in Ihren Cookies, Eine typische Webanwendung weiß nicht, wer Sie sind.

Was sind die Probleme beim Löschen von Cookies im Vergleich zum Klicken auf die Schaltfläche zum Abmelden?

Webanwendungen, die Durch das Verwalten der Authentifizierung gemäß den OWASP-Richtlinien zur Sitzungsverwaltung wird die Sitzung auf der Serverseite ungültig, wenn Sie sich explizit abmelden. Wenn Sie das Cookie einfach mit dem Sitzungstoken verwerfen, kann die Sitzung einer Sitzungsentführung unterliegen.

Verwenden von Türschlössern als Analogie für diejenigen, die mit den Best Practices für die Entwicklung von Webanwendungen nicht vertraut sind (dank Diskussion) in den Kommentaren):

Ihr Konto kann als Raum in einem Gebäude angesehen werden. Wenn Sie sich anmelden, erstellt der Eigentümer des Gebäudes eine Tür und schließt sie automatisch ab, sodass nur Sie eintreten können. Ihr Sitzungstoken ist Ihr Schlüssel und wird normalerweise in den Cookies Ihres Browsers gespeichert, kann aber auch an anderen Orten gespeichert werden.

Wenn Sie Ihr Token durch Löschen Ihrer Cookies, Löschen des Caches usw. verwerfen, wird Ihre Kopie einfach zerstört des Schlüssels.

Beim expliziten Abmelden wird der Bauherr gebeten, die Tür zu ziegeln. Es gibt keine Garantie dafür, dass sie Ihr Konto sichern, aber als Benutzer geben Sie Ihre Wünsche ausdrücklich bekannt.

Es gibt verschiedene Möglichkeiten, wie ein Angreifer eine Kopie Ihres Schlüssels erhalten kann, die als Sitzung bezeichnet wird Hijacking, das liegt in der Verantwortung des Website-Eigentümers, nicht der Benutzer.

Erstens kann der Angreifer nur raten. Wenn die Site Sitzungsschlüssel nacheinander generiert oder eine Pseudozufallsgenerierungsmethode mit niedriger Entropie verwendet, erleichtert dies das Erraten erheblich. Websites mildern dies durch die Verwendung von Token mit hoher Entropie und das regelmäßige Recycling von Sitzungen. Recycling-Sitzungen verhindern nicht den Zugriff, machen jedoch deutlich, wann nicht autorisierter Zugriff gewährt wurde.

Zweitens kann der Angreifer die Sitzungsfixierung verwenden: Sie erhalten vor der Anmeldung einen Schlüssel, den Sie nach der Anmeldung weiterhin verwenden. Websites verringern dies, indem sie die Sitzung bei der Anmeldung explizit recyceln.

Drittens ein Man-in-the-Middle-Angriff. Der Angreifer kann Ihren Schlüssel direkt sehen. TLS mildert dies ab. Es ist möglich, TLS-Verkehr durch Downgrade-Angriffe, unsichere Implementierungen und Zero-Day-Angriffe zu entschlüsseln. Diese liegen jedoch weit außerhalb der Domäne eines Benutzers. Seltene und Zero-Day-Angriffe gegen TLS verursachen häufig viel Rauschen, wenn sie entdeckt werden (Heartbleed et al.)

Als Benutzer sind Sie dafür verantwortlich, sich abzumelden und die Website zur Rechenschaft zu ziehen, wenn Verknüpfungen mit Sicherheit verwendet werden, genau wie Ihre Verantwortung für Ihr Auto auf einem öffentlichen Parkplatz um deine Türen zu verschließen. Wenn die Türschlösser trivial umgangen werden, liegt dies am Hersteller und nicht an Ihnen.

Die Antwort ist richtig, aber es gibt einige Sitzungsverwaltungssysteme, die den Sitzungsstatus nicht serverseitig speichern, sondern ihn kryptografisch sicher in einem Cookie speichern.Selbst wenn Sie sich auf dem Server abmelden, wird das Cookie nicht unbrauchbar.
Und manchmal macht das Abmelden ein Token nicht ungültig.Einige Server behalten das Token nach dem Abmelden bei, falls mehrere Geräte des Benutzers dasselbe Token verwenden / gemeinsam nutzen.Ich erinnere mich an eine der OpenStack-Webkomponenten, die dies getan hat (ich glaube, es war Laravel, aber vielleicht war es ein anderes Front-End).Die Empfehlung lautete: Verwenden Sie OpenStack nicht in einem Internetcafé oder einem anderen Ort, der öffentlichen Zugang bietet ...
Es gibt auch eine Browser-Identifikation, wie sie von LastPass und vielen Banken verwendet wird, die jedes Mal wiederholt werden muss, wenn Cookies gelöscht werden.
Ich bin nicht der Meinung, dass eine moderne Web-App möglicherweise localStorage oder andere Nicht-Cookie-Mittel zum Speichern von Sitzungsschlüsseln verwendet.Es ist nicht üblich, aber auch nicht ungewöhnlich.
Ein Grund wird von Ghedipunk aufgeführt (Token ist immer noch auf der Serverseite gültig).Eine andere Sache ist, dass einige Systeme Token anstelle von Cookies im lokalen Speicher speichern.z.B.Sie können dies in der OpenShift-Konsole sehen.Durch das Löschen des Cookies wird das Token nicht von Ihrem Computer entfernt.
@TomášZato, ich antworte für eine _typische_ Webanwendung, da dies in der Frage war.Ich denke, zusätzliche Antworten mit anderen, nicht typischen Sitzungsmanagements sind hilfreich, wenn Sie bereit sind, eine zu schreiben.
Sicherheitshinweise, die nur in * typischen * Szenarien anwendbar sind, sind keine guten Sicherheitshinweise.Sie sollten Ihr Auto trotzdem abschließen, obwohl * normalerweise * niemand versucht, die Tür zu öffnen.
@TomášZato, ich würde argumentieren, dass bei Verwendung einer Türschloss-Analogie normalerweise keine Gefahr besteht, dass ein Angreifer einen Sitzungstoken erraten, erzwingen oder abfangen kann.Als Benutzer sollten Sie die Tür weiterhin "abschließen", indem Sie sich abmelden und die Sitzung ungültig machen.Um die Analogie zu erweitern, wird beim Abmelden die Tür zugemauert, und beim Löschen Ihrer lokalen Kopie des Sitzungstokens wird nur Ihr Schlüssel zerstört.es kann noch ausgewählt werden oder der Schlüssel wurde möglicherweise kopiert.Ich denke immer noch, wenn Sie eine andere Antwort schreiben, in der beschrieben wird, wie Sitzungen anders als Cookies identifiziert werden, kann dies wertvoll sein.
Es ist also keine gute Idee, sich im Inkognito-Modus anzumelden und nur das Fenster zu schließen
Mohammad Ali
2019-06-02 10:31:11 UTC
view on stackexchange narkive permalink

Einige Websites verwenden nicht auf Cookies basierende Methoden zum Speichern von Daten auf dem Computer eines Benutzers, z. B. den lokalen HTML5-Speicher und den Flash Player-Cache, die möglicherweise vertrauliche Informationen enthalten.

Beispielsweise kann Ihr E-Mail-Client Ihren E-Mail-Entwurf im lokalen Speicher speichern, sodass Sie bei versehentlichem Aktualisieren der Seite / Schließen des Browsers dort weitermachen können, wo Sie aufgehört haben. Diese vertraulichen Daten werden normalerweise entfernt, wenn Sie auf einer gut gestalteten Website auf die Schaltfläche zum Abmelden klicken. Sie werden nicht durch bloßes Löschen Ihrer Cookies entfernt.

Nur unsichere, schlecht gestaltete Anwendungen speichern vertrauliche Informationen auf dem Client.Deshalb ist Ihr Kommentar nicht korrekt.
@mentallurg Auf der anderen Seite gibt es wirklich zu viele davon.
@michaelb958: Sie verstehen das Problem nicht.Wenn die Anwendung vertrauliche Daten auf der Clientseite speichert, ist dies ein Problem, das unabhängig vom Abmelden ist, da beispielsweise die Verbindung unterbrochen werden kann und diese Daten in keiner Weise gelöscht werden.Das Abmelden macht es also nicht wesentlich besser.Bitte sagen Sie deshalb nicht, dass das Abmelden besser ist als das Löschen von Cookies.
@mentallurg Wenn die Verbindung unterbrochen ist, kann sich der durchschnittliche Benutzer nicht abmelden und seine Sitzungscookies nicht löschen.Sie werden also angemeldet, wenn der Computer wieder mit dem Internet verbunden wird.
@mentallurg Ich verstehe das Problem vollständig.Der Kommentar war eine Reflexion über die Anzahl der Apps, die anscheinend von Entwicklern geschrieben wurden, die dies nicht tun.(Nummer: mehr als 0. Gewünschte Nummer: 0.)
@Mohammad Ali: Hmmm, auch Sie verstehen das Problem nicht.Wenn die Verbindung nach einer langen Zeit wiederhergestellt wird, sind Cookies abgelaufen und der Server erkennt keine Sitzung und betrachtet den Benutzer als nicht angemeldet und schlägt nicht vor, sich abzumelden.Der Benutzer kann sich also nicht abmelden, selbst wenn er dies tun möchte.Die sensiblen Daten bleiben also auf dem Client.Es ist falsch zu sagen, dass das Abmelden sicherer ist als das Löschen von Cookies.
@mentallurg Ich verstehe das Problem, ich weise nur darauf hin, dass viele Websites dies tatsächlich tun.Auch wenn das Sitzungscookie nicht abläuft (was auf vielen Websites der Fall ist), gilt das, was ich gesagt habe.
@Mohammad Ali: In einigen Fällen kann es ein Verhalten geben, in anderen Fällen ein anderes.Auf diese Weise werden Sicherheitsprobleme jedoch nicht diskutiert.Selbst wenn es einen Einzelfall gibt, in dem Ihr Ansatz nicht funktioniert, ist Ihre Lösung falsch.Schauen Sie sich jetzt das OP an.Was soll die Antwort sein?Die Antwort sollte wie folgt lauten: Nein, das Löschen von Cookies birgt das gleiche Risiko wie das Abmelden.
@mentallurg "Auch wenn es einen Einzelfall gibt, in dem Ihr Ansatz nicht funktioniert, ist Ihre Lösung falsch."Ich verstehe nicht, warum Sie denken, dass dies der Fall ist.Mohammad Ali erklärt lediglich, dass das explizite Abmelden * besser * ist, da es häufiger als die vorgeschlagene Alternative funktioniert und nicht jedes Mal.Wenn Sie einen Ansatz benötigen, um für "jeden einzelnen Anwendungsfall" zu arbeiten, der sonst fehlerhaft ist, können Sie auch vorschlagen, dass OP sich nicht einmal um das Abmelden kümmert, da die Abmeldefunktion immer mit einer Wahrscheinlichkeit ungleich Null nicht funktioniert.
Vipul Nair
2019-06-01 18:57:31 UTC
view on stackexchange narkive permalink

Kann ich mich einfach abmelden, indem ich Cookies lösche, anstatt mich abzumelden?

Ja, da die Webanwendung Cookies verwendet, um Sie eindeutig zu identifizieren, werden Sie durch Löschen von Cookies abgemeldet.

Was sind die Probleme beim Löschen von Cookies im Vergleich zum Klicken auf die Abmeldeschaltfläche?

Die Abmeldeschaltfläche dient einem besonderen Zweck, da sie eine Löschanforderung sendet die Sitzung und gibt eine Antwort zurück, um das Cookie auch in Ihrem Browser zu löschen. Wenn Sie keine Anforderung zum Löschen der Sitzung senden, bleibt die Sitzung serverseitig aktiv. Sitzungen haben eine maximale Lebensdauer und werden schließlich vom Garbage Collector gelöscht.

Wie oben von Ghedipunk erläutert, werden explizite Abmeldungen verwendet, um die Entführung von Sitzungen / Cookies zu verhindern.Insbesondere auf gemeinsam genutzten Computern gibt es möglicherweise Software zum Aufzeichnen aller erstellten Cookies, sodass diese Cookies auch dann böswillig gespeichert werden, wenn Personen Cookies löschen (oder ein Inkognito-Fenster schließen).Durch das explizite Abmelden werden diese Cookies ungültig. Selbst wenn sie aufgezeichnet wurden, können sie nicht zur Authentifizierung auf dem Server wiedergegeben werden.
* "Da die Webanwendung Cookies verwendet, um Sie eindeutig zu identifizieren, werden Sie durch das Löschen von Cookies abgemeldet." * - Ich glaube nicht, dass dies korrekt ist.Das Löschen von Cookies ist eine clientseitige Aktion.Der Server weiß nichts über einen Client, der eine Datei entfernt.Sie müssen den Server explizit anweisen, Sie abzumelden.
@jww, das habe ich hier geschrieben "Die Abmeldeschaltfläche trennt einen besonderen Zweck, indem sie eine Anforderung zum Löschen der Sitzung sendet und eine Antwort zurückgibt, um das Cookie auch in Ihrem Browser zu löschen."
mentallurg
2019-06-04 02:21:56 UTC
view on stackexchange narkive permalink

Es gibt keine Risiken.

Jemand hat darauf hingewiesen, dass dies das Risiko einer Sitzungsentführung erhöhen könnte. Das stimmt aber nicht. Wenn die Anwendung eine Sitzung hat (statusbehaftet ist), hat diese Sitzung eine Zeitüberschreitung. Und nach Ablauf der Sitzung gibt es nichts zu entführen. Wenn die Sitzung aktiv ist, sind die Chancen, eine Sitzung eines aktiven Benutzers zu entführen, fast gleich wie bei einer "verwaisten" Sitzung. Unter Berücksichtigung von Tools, die schnell mehrere Anforderungen mit ungültigen Sitzungs-IDs von jemandem erkennen, der versucht, die Sitzungs-ID brutal zu erzwingen, besteht kein zusätzliches Risiko auf der Serverseite .

Auf der Clientseite kann beim Abmelden ein höheres Risiko bestehen als beim Löschen von Cookies. Durch das Abmelden wird die Sitzung ungültig, es können jedoch auch andere vertrauliche Daten gespeichert werden. Wenn Sie sich beispielsweise von Google Mail abmelden, wird Ihr Benutzername weiterhin in Cookies gespeichert. Wenn Sie zu Google Mail gehen, wird Ihr Benutzername vorab ausgefüllt. Erstens möchten Sie vielleicht nicht, dass jemand hinter Ihrer Schulter diese Benutzer-ID sieht. Zweitens können Sie sich in Eile bei einem falschen Konto (von mehreren Konten) anmelden. Ähnliche Probleme können in anderen Anwendungen auftreten. Wo wie beim Löschen von Cookies sind Sie sicher, dass in Ihrem Browser nichts gespeichert ist, was Ihnen nicht bekannt ist. Sie werden von den in Cookies gespeicherten Daten nicht überrascht sein. Tatsächlich ist das Risiko negativer Überraschungen beim Abmelden höher als beim Löschen von Cookies. Ich muss sagen, wenn man Cookies löscht, sollte man auch in Betracht ziehen, den lokalen Speicher zu löschen.

Ein einziger Nachteil, den ich beim Löschen von Cookies sehe, ist, dass der Server etwas mehr Ressourcen verwendet, um Sitzungsdaten zu speichern, bis die Sitzung abgelaufen ist. Die Frage in OP betrifft jedoch die Risiken für den Kunden. Es gibt also keine Risiken. Und heutzutage haben die meisten Anwendungen keinen Status auf dem Server. Abmelden bedeutet in diesem Fall nur das Ungültigmachen des Tokens; Oft sind keine Ressourcen durch die Sitzung blockiert. Selbst für "verwaiste" Sitzungen sind keine zusätzlichen Ressourcen erforderlich.

Ein weiterer zu berücksichtigender Aspekt: ​​Je nach Anwendung und Internetverbindung kann das Abmelden einige Sekunden dauern. Wenn das Löschen von Cookies (und des lokalen Speichers) sofort erfolgt und nicht vom Server und der Internetverbindung abhängt.

Möglicherweise findet jemand andere wichtige Punkte, die ich übersehen habe, und kritisiert meinen Standpunkt. Das ist gut. Ich wollte die Benutzer nur ermutigen, keine Regeln blind zu befolgen, sondern darüber nachzudenken, was tatsächlich passiert.

Ich würde absolut zustimmen, dass die Risiken sehr gering sind, aber nicht, dass es keine Risiken gibt.Standardmäßig speichert PHP Sitzungsdaten im Verzeichnis / tmp des Servers ohne explizites Ablaufsystem außer dem regulären Ausmerzen von Dateien, auf die kürzlich nicht zugegriffen wurde.Ich habe gesehen, dass der Cron-Job so konfiguriert ist, dass er nächtlich, wöchentlich, monatlich und sogar deaktiviert ist.- Nur ein kleiner Trottel.Ich finde es einfacher, mit Sicherheit - und Paranoia im Allgemeinen - umzugehen, wenn ich eine absolute Aussage in Frage stelle.
Soronel Haetir
2019-06-01 18:34:20 UTC
view on stackexchange narkive permalink

Es besteht auch das Risiko, dass Sie das Passwort vergessen, obwohl dies eher ein Problem für jemanden ist, der es nur selten benötigt, nicht bei jeder Sitzung, die er auf eine bestimmte Site geht.

Ich würde in Betracht ziehen, nicht auf die Site zugreifen zu können, wenn der Benutzer das Passwort vergessen hat (auch wenn dies der Benutzer ist), ein Sicherheitsmerkmal.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 4.0-Lizenz, unter der er vertrieben wird.
Loading...