Gibt es eine Möglichkeit, ein sicheres Cookie mit JavaScript zu lesen?
Ich habe versucht, dies mit zu tun, document.cookie
und soweit ich in diesem Artikel über sichere Cookies und das HttpOnly-Flag sehen kann , kann ich auf diese Weise nicht auf ein sicheres Cookie zugreifen.
Kann jemand eine Problemumgehung vorschlagen?
javascript
security
cookies
tzam
quelle
quelle
Antworten:
Unterschiedliche Browser aktivieren unterschiedliche Sicherheitsmaßnahmen, wenn das HTTPOnly- Flag gesetzt ist. Zum Beispiel verhindern Opera und Safari nicht, dass Javascript in das Cookie schreibt. Das Lesen ist jedoch in der neuesten Version aller gängigen Browser immer verboten.
Aber was noch wichtiger ist, warum möchten Sie einen
HTTPOnly
Cookie lesen ? Wenn Sie Entwickler sind, deaktivieren Sie einfach das Flag und stellen Sie sicher, dass Sie Ihren Code auf xss testen. Ich empfehle, dass Sie dieses Flag möglichst nicht deaktivieren. DasHTTPOnly
Flag und das "sichere Flag" (das das Senden des Cookies über https erzwingt) sollten immer gesetzt sein.Wenn Sie ein Angreifer sind , möchten Sie eine Sitzung entführen . Aber es gibt eine einfache Möglichkeit, eine Sitzung trotz der
HTTPOnly
Flagge zu entführen . Sie können weiterhin an der Sitzung teilnehmen, ohne die Sitzungs-ID zu kennen. Der MySpace Samy-Wurm hat genau das getan. Es verwendete eine XHR , um ein CSRF- Token zu lesen und dann eine autorisierte Aufgabe auszuführen. Daher kann der Angreifer fast alles tun, was der angemeldete Benutzer tun kann.Die Leute haben zu viel Vertrauen in die
HTTPOnly
Flagge, XSS kann immer noch ausgenutzt werden. Sie sollten Barrieren für sensible Funktionen einrichten. Zum Beispiel sollte für das eingereichte Änderungskennwort das aktuelle Kennwort erforderlich sein. Für die Fähigkeit eines Administrators, ein neues Konto zu erstellen, sollte ein Captcha erforderlich sein. Hierbei handelt es sich um eine CSRF-Verhinderungstechnik , die mit einem XHR nicht einfach umgangen werden kann .quelle
Der springende Punkt bei HttpOnly-Cookies ist, dass JavaScript nicht auf sie zugreifen kann.
Die einzige Möglichkeit (außer zum Ausnutzen von Browserfehlern) für Ihr Skript, diese zu lesen, besteht darin, auf dem Server ein kooperierendes Skript zu haben, das den Cookie-Wert liest und ihn als Teil des Antwortinhalts zurückgibt. Aber wenn Sie das können und würden, warum sollten Sie dann überhaupt HttpOnly-Cookies verwenden?
quelle
Eine der Möglichkeiten ist die Verwendung des Safari-Webinspektors. Auf der Registerkarte "Speicher" können Sie alle Cookies anzeigen, ob httpOnly oder nicht. Wählen Sie einfach den Cookie-Befehl + C aus, um ihn zu kopieren.
Sobald Sie die Zeichenfolge haben, können Sie sie problemlos mit einem beliebigen Cookie-Parser oder einfachem Javascript zurücklesen.
quelle