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", ),