Copying sources and texts (also in parts) for publishing without our permission is NOT ALLOWED. We are fed up with finding our work on other sites (like stackoverflow).
Das Kopieren von Quellcode und Texten (auch in Auszügen) ist nicht erlaubt. Wir haben es gründlich satt, unsere Arbeit auf anderen Webseiten zu finden.

Copying for non-public usage is allowed.           Das private Kopieren und Benutzen ist natürlich erlaubt und erwünscht.
09. Jan 2012
Teaser

Yii: Passwörter automatisch verschlüsselt in der Datenbank speichern (Beispiel: mySQL & md5)

Es ist sehr sinnvoll, ein Passwort vor der Speicherung in die Datenbank automatisch zu verschlüsseln. Dadurch sind diese vor allzu leichtem Auslesen geschützt. Dabei muss auf die Möglichkeit hingewiesen werden, dass natürlich auch MD5 codierte Passwörter nicht zu 100% vor dem Entschlüsseln bzw. Auslesen sicher sind. Es gibt z.Bsp. Tabellen mit gängigen und kurzen Codes – dann hilft auch die beste Codierung wenig.

Als zusätzlichen Schutz sollte man daher einen “Salt” String zusätzlich vor das Passwort kopieren – dadurch wird das Passwort deutlich länger und damit schwerer zu entschlüsseln.

Am Beispiel des PHP Frameworkes Yii stelle ich die automatisch Verschlüsselung vor.

Die Model-Datei (“../protected/models/xyz.php”) muss dafür um die “beforeSave”-Funktion erweitert werden:

public function beforeSave() {
       $this->password = md5($this->password);
       return parent::beforeSave();
}

Für die zusätzliche Verlängerung des Passwortes mit einem “salt” string:

public function beforeSave() {
       $this->password = md5(Yii::app()->params["salt"] . $this->password);
       return parent::beforeSave();
}

Der “salt” string kann dann in der Konfiguration (“../protected/config/main.php”) festgelegt werden. Dieser darf nach dem Speichern von Passwörtern nicht mehr verändert werden, denn ansonsten können die gespeicherten Passwörter nicht mehr vergleichen werden !

  "params" => array(
      "adminEmail" => "xxx@yyy.zz",
      // "salt" string
      "salt" => "3HpwFE.bQ(GhyTrc=)RsS.E#584qrph-ZgGyeXfx",
  ),

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

9 + 14 =