Wie sicher sind Cookies?

RezaScript

Bekanntes Mitglied
Hallo,

ich möchte, dass beim Einloggen der Benutzer eingeloggt bleibt. Hierfür würde ich gerne ein Cookie setzen, bin mir aber nicht so ganz sicher wie es mit der Sicherheit aussieht.

Das Cookie wird ja im Browser gespeichert. Wenn ich also den Benutzernamen und das Passwort des Users als Cookie speichere, sieht somit jeder der seinen Computer bedient seine Zugangsdaten. Ist das normal so oder übersehe ich hier etwas?
 
K

kneitzel

Gast
Generell ist diese Thematik relativ komplex und da würde ich - so es um mehr als eine rein lokale Spielerrei geht - auf durchdachte Lösungen zurück greifen. Denn hier kommen durchaus mehrere Dinge zum Tragen wie z.B. cross site scripting und co.

Die üblichen Frameworks haben da nicht ohne Grund entsprechend komplexe Lösungen aufgebaut (z.B. Spring Security).
 

RezaScript

Bekanntes Mitglied
Du speicherst nicht den Anmeldedaten im Cookie, sondern die Session-ID. EDIT: Oder meinst Du was anderes?
Die Session-ID als Cookie zu speichern gefällt mir schon viel besser als Benutzername und Passwort. Aber wie funktioniert das genau? Muss ich also die ID nicht nur als Cookie, sondern sie auch in meiner Datenbank abspeichern, damit ich überprüfen kann, ob es derselbe User ist?

Aber auch dann wäre es rein theoretisch gesehen möglich, dass das Cookie geklaut wird.
 
K

kneitzel

Gast
@JustNobody XSS hat nix mit Frameworks zu tun.

Tobias: Bitte lies doch den Beitrag einmal genau durch. Meine Aussage war nicht, dass XSS etwas mit Frameworks zu tun hat.

Meine Aussage war ganz trivial: Security ist ein komplexes Thema und bedarf deutlich mehr. Eine gute Möglichkeit - so es sich um mehr handelt als nur eine Spielerei - sind fertige Lösungen. Und da habe ich dann bei Eigenentwicklungen Frameworks erwähnt und Spring Security als Beispiel gebracht. Und um nur ein Beispiel für mögliche Angriffsvektoren zu bringen, habe ich XSS angesprochen und wenn man sich https://docs.spring.io/spring-secur...ence/html/headers.html#headers-xss-protection ansieht, dann sieht man, dass es ein Thema von vielen ist, das behandelt wurde.

Nun kannst Du gerne sachlich etwas beitragen, aber bitte versuch doch erst einmal, die Aussagen zu verstehen. Ich denke nicht, dass meine Aussage so schwer zu verstehen war, oder?

Und Cookies sind aus meiner Sicht unsicher:
a) Bezüglich Daten muss man sehen, dass Cookies nicht zwingend persistent sind.
b) Cookies sind auf der Platte gespeichert ohne Verschlüsselt zu werden. So die Festplatte nicht verschlüsselt wird, sind die Daten also leicht auslesbar.

Die Idee mit der Session ID ist ein guter Anfang (Login / Passwort wäre fatal), aber das alleine würde ich nicht als ausreichend bezeichnen.
 

mihe7

Top Contributor
Die Session-ID als Cookie zu speichern gefällt mir schon viel besser als Benutzername und Passwort. Aber wie funktioniert das genau?
Zunächst mal müssten wir wissen, was genau Du vorhast, denn ggf. willst Du serverseitig gar keine Sessions verwalten und Dir geht es nur darum, den Benutzer wieder zu erkennen.

Das Prinzip hinter den Session-Cookies ist, dass der Browser mit jeder Anfrage den erforderlichen Cookie übermittelt, der die ID einer Sitzung enthält. Der Server überprüft, ob es die Sitzung gibt bzw. ob diese noch nicht abgelaufen ist. Sollte die Sitzung nicht (mehr) existieren oder abgelaufen sein, wird der Browser auf die Login-Seite geleitet. Hat sich der Benutzer korrekt angemeldet, wird eine neue Sitzung erstellt, die ID per Set-Cookie-Header an den Browser übermittelt und das Spiel beginnt von vorne.

Wo die Sitzungsdaten, und ob sie persistent gespeichert werden, ist eine ganz andere Frage.

Aber auch dann wäre es rein theoretisch gesehen möglich, dass das Cookie geklaut wird.
Ja. Dafür wurden in der Vergangenheit viele Gegenmaßnahmen entwickelt. So lassen sich MitM-Attacken mittels verschlüsselten Verbindungen (TLS) verhindern. Bei CSRF-Attacken wird es schon schwieriger. Daher hat @JustNobody auch völlig richtig darauf hingewiesen, dass das Sicherheitsthema nichts ist, was man mal eben zwischen Tür und Angel selber macht.

Hier mal ein Test (Link geht auf https://www.java-forum.org/logout), wenn das funktioniert, hast Du gute Chancen, dass Du den Link in einer x-beliebigen Seite einbauen kannst, ggf. getarnt als img, um jeden Besucher der Seite automatisch aus dem java-forum.org ausgeloggt wird. Da im Originallink noch ein Parameter folgt, gehe ich mal davon aus, dass dieser dazu dient, solche Attacken zu verhindern.
 

Ähnliche Java Themen

Neue Themen


Oben