Melvin Cowznofski: password_verify Passwortabfrage mit Datenbank

Beitrag lesen

Hallo Rolfi,

Ein Passwort, aber mehrere Hashes

das liegt in der Natur der Sache. Genau das ist der Sinn von Hashes, dass ein und der selbe Ursprungswert verschiedene Hashes erzeugt. Das erschwert es, auf Grund des Hashes auf den Ursprungswert schließen zu können.

Zudem muss ich erst den Hash aus der Datenbank holen um dann mit password_verify zu testen, ob das Passwort stimmt. Danach muss ich eine erneute Datenbankabfrage stellen um die Daten aus der Datenabnk zu holen.

Das verstehe ich nicht, normalerweise hat 1 User 1 Passwort. Du holst also den Hash des Users anhand seines Usernamens aus der DB, vergleichst den Wert mit dem Hash des im Login eingegebenen Passwortes und das stimmt dann oder stimmt nicht. Das benötigt keine "erneute Abfrage".

Ist es irgendwie möglich, das password_verify direkt in einer SQL Abfrage zu verwenden?

password_verify() ist eine PHP Funktion, das hat mit SQL nichts zu tun.

Ansonsten müsste ich alles in einem Array zwischenspeichern und das Array erst freigeben, wenn das Passwort stimmt. Oder eine zweite Abfrage starten.

Siehe oben! Du machst eine Abfrage und holst Dir den gespeicherten Hash jenes Usernamens, der beim Login eingegeben worden ist. Dann machst Du einen Hash des eingegebenen Passwortes und vergleichst die beiden Werte.

sha256 gilt als "unsicher", hat aber 11 Zeichen mehr.

Du kannst das Passwort ja noch salzen, dann ist es schon ziemlich sicher.

Für mich erscheint password_hash unsicherer

Im Gegenteil, da ist der Salt-Wert schon dabei! Allerdings funktioniert das nur ab PHP 5 >= 5.5.0!

Kann mich jemand aufklären?

Also google mal nach den Begriffen "Hash" und "Salt", um das Grundprinzip zu verstehen. Auf Youtube findest Du auch sehr viele gute Videos, wo die Thematik erklärt und die PHP Verwendung demonstriert wird. Wenn Du eine PHP Version >= 5.5.0 verwendest, dann verwende password_hash, ansonsten nimm hash() mit zB. sha256 plus Salt-Wert!!

Mit lieben Grüßen

Melvin Cowznofski

--
Melvin Cowznofski What – me worry?