Benutzerverwaltung sicher gestalten

Zu dem "salten":

Versteh ich das Prinzip so richtig:
Mein Nutzer hat ein Passwort "1234" und ich habe meinen Salt "abcd".
Von beidem erstelle ich mir eine MD5 Checksumme und füge Sie zusammen. Und davon erstelle ich dann wieder eine MD5-Checksumme die ich zur Überprüfung verwende?
 
Ja so in etwa.
Codetechnisch dann etwa so:
PHP:
$salt = '';
for( $i = 0; $i < 3; $i++ ){ //Salt mit 3 Zeichen erzeugen
  $salt .= chr( rand( 33, 126);
}
$username = mysql_real_escape_string($_POST['username']);
$password = md5( md5($_POST['password'].$username) . $salt ); 
$sql = 'INSERT INTO `users` (`username`, `password`, `salt`) VALUES("'.$username.'", "'.$password."', '".$salt.'"';
mysql_query($sql);
//Abfrage
$username = mysql_real_escape_string($_POST['username']);
$sql = 'SELECT * FROM `users` WHERE `username` = "'.$username.'"';
$result = mysql_query($sql);
if( mysql_num_rows($result) == 1 ){
  $row = mysql_fetch_assoc($result);
  if( $row['password'] == md5( md5($_POST['password'].$row['username']) . $row['salt'] ) ){
    //Zugang gewährt    
  }
}
 
@timestamp:
Ja, das weiß ich. Im Prinzip muss man dafür zuerst Zugriff auf die Hashes haben und dann noch die mit den Rainbowtables vergleichen.
 
Zurück