Passwörter in Cookies speichern?
Hi. Sollte man Passwörter (natürlich gehasht, z. B mit SHA-256-Hash) speichern? Bzw. ist das "okay". Des weiteren hab ich eine andere Frage. Wenn man in einer App eine ID hat und man diese beim Programmeiren oft an den Server (also immer) geben muss, sollte man die dort auch speichern? Also auch natürlich gehasht.
3 Antworten
Was hä WTF
- 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.
- 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
- 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!
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
Danke erstmal. Ich nutze Vue.js als Framework. Würdest du da Vue-Auth empfehlen?
Kenne Vue.js nicht. Aber irgendwas wird es schon geben. Dein größeres Problem dürfte die Implementierung des Backend sein.
Kannst du es genauer erklären? Also das mit 0Auth2?