Liebe Mitdenker, liebe Wissende, liebe Neugierige,
ja!
Ein Passwort, aber mehrere Hashes
das liegt in der Natur der Sache. Genau das ist der Sinn von Hashes,
Nein, das ist der Sinn des automatischen Salts, der mit dem Hash gespeichert wird.
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 stimmt leider, wenn das DBMS keine äquivalente Validierungsfunktion für Hash/Passwort hat. Du kannst dann die Datenabfrage leider nicht kapseln in einer stored Routine. Dazu müsstest Du ggf. die DBMS-eigene crypt()-Funktion verwenden.
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".
Doch, für die Nutzdaten. Und die sind dann nicht kapselbar, da die API entscheidet, ob sie gelesen werden dürfen und nicht das DBMS.
Ist es irgendwie möglich, das password_verify direkt in einer SQL Abfrage zu verwenden?
Alles, was außerhalb des DBMS geprüft wird, bricht das Konzept der Kapselung. Das ist aber für Dich nur dann interessant, wenn Du den direkten (Select-)Zugriff auf die Tabellen unterbindest und dafür stored Procedures schreibst. Die ermöglichen dann die Zugriffskontrolle und ein Logging.
Spirituelle Grüße Euer Robert
Möge der Forumsgeist wiederbelebt werden!