Mailinglisten-Archive |
> > Never ever das Passwort im Klartext speichern > > Wie kann ich denn das umwandeln? Muß ich es auch > in die DB verschlüsselt reinschreiben? Wie kann ich denn > das machen? das machst du am Besten mit crypt(). Bei crypt() handelt es sich um eine "Einweg"- Verschlüsselung nach der Standart Unix DES Methode, d.h das Passwort wird verschlüsselt, und dann so in die Datenbank eingetragen. Eine Decodierung ist nicht möglich. In der Datenbank hast du dann ein verschlüsseltes Passwort stehen. Wenn nun ein Benutzer sein Passwort zwecks Authentifizierung eingibt, musst du dieses wieder mittels crypt() verschlüsseln und dann mit dem Eintrag in der Datenbank vergleichen. Manual- Eintrag: ---------------- http://www.dynamic-webpages.de/phpmanual/html/function.crypt.html Achtung: Crypt() braucht einen 2-Zeichen-Salt, damit es den String nicht zufälllig verschlüsselt. Das wäre unschön, weil der so entstandene verschlüsselte String kaum mit dem in der Datenbank übereinstimmen würde. Beispiel: --------- a) Eintragen des Passwortes in DB: $saltin = substr($passwd,0,2); $passwd = crypt($passwd, $saltin); /* $passwd ist Passwort, $saltin ist generierter Salt */ b) verschlüsseltes Passwort aus der DB holen, Salt generieren und vom Benutzer eingegebenes Passwort mit diesem Salt codieren: $saltout = substr($db_auth_pass,0,2); $auth_pass = crypt($auth_pass,$saltout); /*$db_auth_pass ist codiertes Passwort aus DB, $auth_pass ist eingegebenes Passwort -> wird codiert*/ c) Vergleich: if ($auth_pass==$db_auth_pass) { printf("Zugriff erlaubt"); } else { printf("Zugriff verweigert") } Tip: ---- Es sollte das vom Benutzer eingegebene Passwort vor Eintrag in Datenbank und vor dem Vergleich jeweils mit strtolower() und trim() behandelt werden. mit bestem Gruß - Armin _______________________________________________________________ PHP Knotenpunkt - Dynamic Web Pages _(at)_t http://www.dynamic-webpages.de Installation,BestOfGML,Tipps,Tutorials,WhoIsWho,Deutsches Manual uvm.
php::bar PHP Wiki - Listenarchive