[PHP] Passwort verschlüsselung in MYSQL [Advanced]

Dieses Thema im Forum "Programmier Tutorials" wurde erstellt von badloader, 8. Mai 2007 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 8. Mai 2007
    Passwort verschlüsselung in MYSQL [Advanced]

    Hallo zusammen,

    sicher hat sich jeder Anwender schon einmal gedacht, wie er wohl am besten seine User schützen kann (sofern User vorhanden sind).

    Sicher habt seit ihr bei weitergehenden Suchen auf die Funciton md5() gestoßen. Doch ist diese Function ausreichend? Meiner Meinung und Erfahrung nach: Nein.

    md5 ist eine weit verbreitete Verschlüsselungmöglichkeit, die fast ausschließlich genutzt wird.

    Wenn man nun ein Passwort md5 verschlüsselt kann ich euch sagen, dass sobald einer den Hash hat, er auch euer passwort geknackt hat. (Raindbowtables, Wordlists, etc)

    Deshalb kann man sein passwort einfach schützen:

    In MYSQL eine Spalte "salt" hinzufügen. Sie dient zur doppelten Verschlüsselung.

    Das passwort besteht aus: md5(SALT + md5(Passwort);

    Der Login funktioniert beispielsweise so:
    Code:
    if (isset($_POST['nick']) && isset($_POST['pass']))
     {
     $db->query("SELECT salt, password, rights FROM $table WHERE nick = '".$_POST['nick']."' LIMIT 1");
     $result = $db->fetch();
     
     if (isset($result[0]) && isset($result[1]) && ($result[1] = md5($result[1].md5($_POST['pass']))) && ($result[2] >= $rights))
     {
     // SESSION SETZEN oder so
     }
     }
    Einen User hinzufügen kann man über:
    Code:
    /**
     * Generiert einen zufälligen Salt mit [a-z] ^ [0-9] (6 Zeichen lang: Wegen DB)
     * Beispiel für $key: j6h42r
     *
     * @return string
     */
    function register_generate_salt ()
    {
     $pattern = "1234567890abcdefghijklmnopqrstuvwxyz";
     for ($i=0; $i<10; $i++)
     {
     if (isset($key))
     $key .= $pattern{rand(0,35)};
     else
     $key = $pattern{rand(0,35)};
     }
     return $key;
    }
    
    /**
     * Generiert den Salt und fügt ihn zum passwort
     * Eintragung der Parameter in die DB
     *
     * @param string $nick
     * @param string $password
     * @param string $ps3id
     */
    function register_add_user ($nick, $password, $else)
    {
     global $db;
     
     $salt = register_generate_salt();
     $pass = md5($salt.md5($password));
     
     $sql = "INSERT INTO users
     (nick, salt, password, ps3id)
     VALUES(
     '".$nick."',
     '".$salt."',
     '".$pass."',
     '".$else."')
     ";
     $db->query($sql);
     echo "Der Benutzer wurde erfolgreich angelegt <br>";
     echo "Sie können sich jetzt einloggen";
    }
    Ich weiß nicht ob's jemandem hilft aber würde mich freuen!

    Bedanken oder bewerten könnt ihr natürlich auch!

    Gruß bad
     
  2. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.