2016-05-16 9 views
-6

Bevor ich anfange, werde ich feststellen, dass ich im Moment mit der alten MySQL-API feststecke.Wie kann ich ein verschlüsseltes Passwort in einer Anfrage verwenden?

Ich benutze diese Funktion für die Passwort-Erstellung.

$password = $_POST[password]; 
$passwordhashed = password_hash($password, PASSWORD_DEFAULT); 

aber jetzt brauche ich wie diese eine Abfrage auszuführen:

$query_f = mysql_query("SELECT fiscal FROM list WHERE password='$password'"); 

aber natürlich kann ich nicht $password verwenden, weil in der Datenbank ist es mit einem zufälligen Salz verschlüsselt. Also, wie mache ich das?

Das ist nicht, was ich eigentlich tun werde. Aus den Gründen, mit denen ich dich nicht belästigen möchte, würde ich gerne wissen, ob es möglich ist und wie.

+4

Schauen Sie sich die Beispiele [password_verify] (http://php.net/password_verify) an. Normalerweise würden Sie Ihre Datenbank mit dem Benutzernamen abfragen (warum Sie nach dem Passwort fragen, von dem ich keine Ahnung habe) und dann password_verify verwenden, um das bereitgestellte Passwort (einfach) mit dem aus der DB zurückgegebenen Hash zu vergleichen. –

+5

Beenden Sie die Verwendung der ** veralteten und ab PHP7 entfernten ** mysql_ * -Funktionen. Migrieren Sie zu PDO und verwenden Sie vorbereitete Anweisungen. –

+0

Um Ihre Frage zu beantworten: Nein, das ist nicht möglich. Jedes Mal, wenn Sie 'password_hash' verwenden, generiert PHP automatisch ein sicheres Salz und macht jedes Mal, wenn Sie das Passwort hashen, einen anderen Hashwert (auch wenn es derselbe ist). Sie müssen eine eindeutige Kennung (wie Benutzername oder E-Mail) verwenden und dann mit "password_verify" prüfen, ob das angegebene (normale) Passwort mit der gespeicherten Hash-Darstellung übereinstimmt. –

Antwort

2

Sie nicht. Suchen Sie den Benutzer anhand einer Kennung (z. B. eines Benutzernamens oder einer E-Mail-Adresse) und überprüfen Sie, ob das Kennwortfeld mit password_verify übereinstimmt. Sie können insbesondere keinen Benutzer nach einem gesalzenen Passwort-Hash suchen, der den Punkt des Salzens vereiteln würde.

+0

Auch der Hash ändert sich bei jedem Hashing, auch bei gleichem Passwort, aufgrund eines zufälligen kryptographisch erzeugten Salzes. –

Verwandte Themen