Ich habe einen Benutzer der Datenbank wurdeWarum muss mysqli_connect() den Parameter password ohne Verschlüsselung erhalten?
CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'my_pass';
GRANT ALL PRIVILEGES ON * . * TO 'my_user'@'localhost';
FLUSH PRIVILEGES;
Der Pass in verschlüsselten Modus auf dem mysql.user Tabelle gespeichert zu verwenden.
Aber wenn ich die mysqli_connect() Methode benutze, finde ich, dass wenn ich den Pass als Parameter gebe, ich den unverschlüsselten, ursprünglichen Wert geben muss, den ich bei der Abfrage benutzt habe, wenn ich den nicht bekommen will berühmt "Verbindung fehlgeschlagen: Zugriff verweigert für Benutzer 'my_user' @ 'localhost' (mit Passwort: YES)".
Aber das ist eigentlich ein anderer String-Wert, der in der Datenbank gespeichert ist (verschlüsselte Version).
Wie ist es? Wäre es nicht sicherer, die verschlüsselte Version als Parameter anzugeben, falls jemand auf die .PHP-Datei zugreift, wo ich die Verbindung herstelle? Warum akzeptiert mysqli_connection das nicht? Gibt es einen Weg, es zu tun?
Wenn Sie sich in stackoverflow oder einer anderen Website anmelden - Sie geben Ihren einfachen Text passowrd - aber sie sind Hash gespeichert. Sie werden gehashed, falls die db, die sie enthält, kompromittiert ist. – nogad
Warum wäre es sicherer? Sie könnten sich immer noch mit dem Passwort einloggen, das in der PHP-Datei – JimL
zu finden ist. Was ist der Sinn des verschlüsselten Passworts, wenn es genauso gut verwendet werden kann? Wenn Ihr imaginäres mysqli_connect ein verschlüsseltes Passwort akzeptiert, dann brauchen Sie nur in eine PHP-Datei zu gucken, das Passwort zu erhalten und eine Verbindung zu einer Datenbank herzustellen.WAS GIBT? –