Passwörter in Cookies speichern?

3 Antworten

Was hä WTF

  1. Sollst du Passwörter nicht (nur) mit SHA-256 hashen sondern mit einer vernünftigen Key Derivation Function / Hashfunktion die auf Passwort Hashing ausgelegt ist mit einer vernünftigen Anzahl an Runden und Salt. Ein Beispiel wäre bcrypt, da wird dir quasi alles abgenommen.
  2. Nein du speicherst eine Session ID im Browser und nicht das Passwort und das was sich ändert ist wie lange diese Session gültig ist
  3. Würde ich empfehlen, dass du den Login nicht selber baust wenn du so eine Frage stellen musst, könntest z.B. Keycloak (wenn du selber einen Dienst der den Login übernimmt betreiben möchtest) + eine Library für Oauth2 / OpenID Connect verwenden
natürlich gehasht, z. B mit SHA-256-Hash

wenn überhaupt, dann bitte nicht ungesalzen. Sonst kannst du es auch gleich im Klartext speichern.

Nein! Normalerweise wirst Du in solchen Fällen eine tokenbasierte Authentifizierung machen, z.B. OAuth2.

Dann speichert die App/Webseite nur den Benutzernamen und das Token, aber niemals das Kennwort!


Luca34332 
Fragesteller
 14.02.2023, 14:26

Kannst du es genauer erklären? Also das mit 0Auth2?

0
ohwehohach  14.02.2023, 14:29
@Luca34332

Kurzform: Benutzer gibt Benutzername und Kennwort an. Als Antwort bekommt er Token und Refreshtoken zurück (mit Ablaufdatum). Zukünftig wird mit Anfragen an den Server nur noch das Token geschickt. Wenn dieses kurz davor ist, abzulaufen, fragt die Webseite/App beim Server mit Hilfe des Refreshtoken ein neues Token und ein neues Refreshtoken ab.

Vorteil:

  • Client muss die Login-Daten nicht kennen, sondern lediglich einmal weitergeben.
  • Token kann Informationen über Benutzerberechtigungen beinhalten
  • Token sind nicht fälschbar
  • Token sind widerrufbar
0
Luca34332 
Fragesteller
 14.02.2023, 14:31
@ohwehohach

Danke erstmal. Ich nutze Vue.js als Framework. Würdest du da Vue-Auth empfehlen?

0
ohwehohach  14.02.2023, 14:32
@Luca34332

Kenne Vue.js nicht. Aber irgendwas wird es schon geben. Dein größeres Problem dürfte die Implementierung des Backend sein.

0