PASSWORD-Wert mit MySQL-Abfragen erzeugen

Admin (Administrator) on 26.12.2018

Haben Sie schon irgendwann von einem Hostinganbieter zu anderem umgestiegen? Hier sollte man nicht nur PHP-Features berücksichtigen, sondern auch MySQL-Features kennen.

Haben Sie schon irgendwann von einem Hostinganbieter zu anderem umgestiegen?

Haben Sie schon irgendwann von einem Hostinganbieter zu anderem umgestiegen? Hier sollte man nicht nur PHP-Features berücksichtigen, sondern auch MySQL-Features kennen.

Problembeschreibung: es gab eine Tabelle mit den Zugangsdaten, in der die Passwörter mit MySQL PASSWORD gespeichert wurden. Bei dem neuen Anbieter war diese Funktion umgeschaltet auf OLD_PASSWORD, so dass PASSWORD gleich OLD_PASSWORD ist.

Hier kläre ich, um was es eigentlich geht. OLD_PASSWORD-Funktion erzeugt einen Hashwert (alten Wert von Funktion PASSWORD) des alten Modells (vor Version 4.1), dient zur Abwärtskompatibilität. Ab Version 4.1 wurde die Funktion PASSWORD geändert. Alle MySQL-Benutzerkonten (root usw.) sind in der Tabelle user der Datenbank mysql aufgelistet. Die Passwörter in der Spalte "Passwort" werden mit der PASSWORD-Funktion berechnet.

Sehr viele Webseiten und Hostinganbieter haben die Tabellen mit den alten Werten von PASSWORD-Funktion (16 Zeichen). Deshalb setzen Sie die Variable "old_password" in my.ini auf 1 gesetzt, so dass neue Funktion PASSWORD das alte Verfahren verwendet.

Vor Version 4.1: PASSWORD('1234') ='446a12100c856ce9' (16 Zeichen)
Nach Version 4.1: OLD_PASSWORD('1234')='446a12100c856ce9' (16 Zeichen)
Nach Version 4.1: PASSWORD('1234')='*A4B6157319038724E3560894F7F932C8886EBFCF' (41 Zeichen)

Wenn die Variable "old_password" aus my.ini auf 1 gesetzt wurde, dann:

Nach Version 4.1: OLD_PASSWORD('1234')='446a12100c856ce9'
Nach Version 4.1: PASSWORD('1234')='446a12100c856ce9'

Aber ich hatte die Passwörter mit 41 Zeichen und die Einstellung aus my.ini (oder my.cnf) dürfen wir nicht ändern. Deshalb habe ich selbst eine SQL-Abfrage geschrieben, die neue 41-lange PASSWORD-Funktion emuliert:

SELECT CONCAT('*',UCASE(CAST(SHA1(UNHEX(SHA1('1234'))) AS CHAR)))

und als Antwort bekommnt man den gewünschten Wert '*A4B6157319038724E3560894F7F932C8886EBFCF' Leider beinhaltet die MySQL-Dokumentation keine Hinweise darauf, dass die neue PASSWORD-Funktion mit dieser Formel generiert werden kann. Beachten Sie, dass PASSWORD sowie OLD_PASSWORD quasi interne Funktionen sind. Sie dienen zur Kodierung interner Passwörter (Tabelle "user" usw.) Wenn Sie die Zugangsdaten Ihrer Benutzer speichern möchten, verwenden Sie Funktionen SHA1 oder MD5.

Tag: Password, MySQL, Server

Kurz Profil über Cliff

xProg.de Gründer. Jahrgang 1986. Stolzer Familienvater. Habe Früh mit Computer und Hardware angefangen. Die ersten Self-Made Computer waren nicht die besten, funktionierten aber tadellos. Kenne noch 56k-Modems, und habe mit Windows 3.1 angefangen meine ersten Texte zu schreiben, über Windows 95, bis zu Windows 7 dann aktiv eingestiegen. Auch arbeite ich aktiv mit Linux für Homebase als auch auf der Serverebene. 

Auf die Idee Anleitungen zu schreiben kam ich, als ich zum Thema Debian was gesucht habe. Leider waren viele Anleitungen oder vorschläge veraltet und daher leider nutzlos.

Wenn meine Anleitungen auch veraltet sein sollten, dann schreibt mir das bitte und ich versuche sie zu aktualisieren.

Wer mich (finanziell) unterstützen möchte, der kann mir hier gerne etwas spenden.

Webseite: https://www.chatmaske.de/ - https://www.mailda.de/
Facebook: https://www.facebook.com/cain.j.dawson
Twitter: https://twitter.com/CainDawsonDE

Letzte Artikel von Cliff

 

zurück



Bislang wurde kein Kommentar abgegeben. Seien Sie der erste, der kommentiert. Kommentar abgeben