So, ich habe mir jetzt ein paar Artikel zu md5-Hash und salt durchgelesen und bin nicht so richtig schlau daraus geworden.
Ich habe mal einen dokumentierten Quellcode geschrieben und hoffe, dass mir jemand sagen kann, ob es von der Sicherheit so reicht oder ob ich irgendwas vergessen oder sogar falsch gemacht habe.
Das ist mein erster Versuch mit md5()!!!
User:
PW:
<?php // Als erstes wird eine Datenbank erstellt, die folgende Attribute enthaelt:// ID // User // Password // Salt // Jetzt wird ein Benutzer angelegt, indem man eine Eingabemaske mit HTML erstllt, in der man // den Benutzernamen und das Password eingibt. // Das Dokument sendet nun einen INSERT-Befehl an die Datenbank. // In der Datenbank wird der Benutzername (hier: max) gespeichert. // Zudem wird das Password als md5-Hash (hier: md5(1234)) gespeichert. // Und zu guter letzt noch ein salt, der zufaellig generiert wird, gespeichert. // ################## Salt ################## // So koennte der Zufallsgenerator fuer den salt aussehen function salt\_generator() { // substr - gibt einen Teil des Strings zurueck // rand() - generiert zufaellige Zahlen // uniqid - gibt eine eindeutige ID zurueck, die durch die aktuelle Zeit in Millisekunden generiert wird $salt\_db=substr(uniqid(rand()),2,10); return $salt\_db; } // ################## Password ################## // Hier wird mit Hilfe von md5 und dem salt ein Hash generiert. Dieser Hash wird als Password in der // Datenbank abgespeichert. function hash\_generator($pw, $salt, $user) { $pw\_hash=md5($pw.$salt.$user); return $pw\_hash; } // Nun zur Abfrage, ob der User sich auch einloggen darf: // Variablen, die eigentlich aus der Datenbank ausgelesen werden!!! // Zu Test-Zwecken hier vorgegeben!!! $user\_db="max"; $pw\_db="758ec8dce8b92977300e12f66e8d597e"; $salt\_db="270476bace"; // Variablen, die aus der Eingabemaske des Users ausgelesen werden $eingabe\_user=$\_POST[user]; $eingabe\_pw=$\_POST[pw]; // Ueberpruefung, ob die Eingaben (Benutzername und Password) auch mit den Eintraegen // der Datenbank uebereinstimmen. // Hier wird der selbe Hash-Code erstellt, der als Password in der Datenbank liegt $password=md5($eingabe\_pw.$salt\_db.$eingabe\_user); // Abfrage ob ueberhaupt etwas eingegeben wurde if($\_POST[user]=="" OR $\_POST[pw]=="") { echo "Bitte die Felder ausfüllen"; } // Abfrage ob die Eingabe und die Eintraege der Datenbank uebereinstimmen elseif($password==$pw\_db AND $eingabe\_user==$user\_db) { echo "Eingabe RICHTIG!!!"; } // Falls die Eingaben nicht uebereinstimmen else { echo "FALSCH... :frowning:"; } ?\>