Ich gehe gerade über meinen Benutzerregistrierungscode. Der Teil, auf den ich mich gerade konzentriere, ist der Password Hashing Teil.Wie kann ich eine Funktion nur einmal laden und die Rückgabe in einer Variablen speichern?
Was ich tue ist eine static_salt aus einer Konfigurationsdatei, und verwenden Sie mt_rand(), um eine dynamische_Salz zu generieren. Was ich tun möchte, ist diese dynamic_salt in meiner Datenbank gespeichert zu haben.
Wenn ich jedoch die Methode dynamic_salt() an die create-Methode übergebe, um sie an die Spalte salt einer Tabelle in meiner Datenbank zu senden, führt sie die Methode einfach erneut aus und erzeugt ein anderes Ergebnis als das in my hashed() -Methode.
Was wäre der beste Weg, um das zu erreichen, was ich erreichen möchte, könnten Sie mir ein Beispiel zeigen, wenn möglich?
public function create() {
$dbcolumn->password = $this->hashed();
$dbcolumn->salt = $this->dynamic_salt;
$this->db->insert('users', $dbcolumn);
}
public function dynamic_salt() {
$get_dynamic_salt = mt_rand();
return $get_dynamic_salt;
}
public function hashed() { //hashing method, that also makes
// sha1 and salt password
$static_salt = $this->config->item('encryption_key'); //grab static salt from config file
$dynamic_salt = $this->dynamic_salt();
$password = $this->encrypt->sha1($this->input->post('password')); //encrypt user password
$hashed = sha1($dynamic_salt . $password . $static_salt);
return $hashed;
}
hat die Bearbeitung gemacht $ dbcolumn-> salt = $ this-> dynamic_salt; – LondonGuy
Mir wurde gesagt, dass ich kein dynamisches Salz verwenden soll und dass es riskant ist, ein Salz in der Datenbank zu speichern – LondonGuy
Ich denke du meinst '$ dbcolumn-> salt = $ this-> dynamic_salt();'? Warum auch all das benutzen? warum benutze nicht einfach md5 und setze eine beschränkung auf das passwort (alphanumerisch, min_length ... etc), ich weiß dass du das seit du [CI] verwendest (http://codeignit.com/user_guide/libraries/form_validation.html) – ifaour