Dienstag, Februar 18, 2020

Wie Passwort generieren Salz mit codeigniter

Sorry für die neu in der php-Programmierung, in meinem alten Projekt habe ich mit MD5 verschlüsseln Sie das Kennwort, allerdings ist es nicht sicher genug, und ich fand einige Ressourcen auf dem internet empfehlen die Verwendung von Passwort-Salz statt.

Das problem ist , ich bin mit codeigniter, gibt es eine Helfer/in-Bibliothek für diesen Zweck /wie kann ich änderungen an meiner alten code zu unterstützen die Erzeugung der Passwort-Salz?

Danke für die Hilfe. Ich bin mit PHP 5.2

Und hier ist der alte code zu validieren, während das Benutzerkonto generieren, indem die md5($password);

function validate_credentials() {
        $this->load->model('Secure_model');

        $username = $this->input->post('username');
        $password = md5($this->input->post('password'));

        $is_valid = $this->Secure_model->validate('customer', $username, $password);

        if ($is_valid) {
            $data = array(
                'user_id' => $this->get_user_id($username),
                'user_name' => $username,
                'is_logged_in_user' => true
            );
            $this->session->set_userdata($data);
            redirect('profile');
        } else {
            $data['message_error'] = TRUE;
            $data['main_content'] = 'front/login';
            $this->load->view('front/includes/template', $data);
        }
    }
Ich fand, dass ich brauche, um zu speichern das Salz in die Datenbank, ist das eine tutorial sunnyis.me/blog/sichere-Passwörter apporiate für meine Anforderung? Vielen Dank
Dont speichern das Salz in der Datenbank! Wenn man jemanden um einen dump der DB, erhalten Sie das Salz verwendet. Seine im Grunde das gleiche wie nicht mit jedem Salz.
Vielen Dank für Ihre Antwort,aus diesem tutorial es scheint, ich muss noch nicht mal speichern das Salz. nur die Codierung wie die md5-Aber ist das Salz unruhigen für jeden Datensatz in phppass?
Mit einem einzigartigen salt pro Passwort, ein Angreifer hat, um zu bauen eine rainbow-Tabelle für jedes Passwort, welches keinen Sinn ergibt (brute-forcing ist schneller). So dass der Zweck des Salzes zu verhindern, dass die Verwendung von einem einzigen Regenbogen-Tabelle, um alle Passwörter auf einmal. Was Sie wohl im Sinn haben, ist aufgerufen, ein Pfeffer oder ein Schlüssel. Wenn Sie interessiert sind, können Sie einen Blick auf mein tutorial über sicheren speichern von Kennwörtern.
diesen Teil verstehe ich, das ist die Speicherung der salt in der db, die ich nicht verstehe. Sicher, Wenn es eine andere db. Prüfen Sie Ihre Seite! Vielen Dank,

InformationsquelleAutor user782104 | 2014-09-08

4 Kommentare

  1. 6

    Wenn Sie wirklich stecken mit PHP 5.2 ist Ihre beste Wette wird wahrscheinlich sein, die phpass Bibliothek, da gibt es keine PHP Unterstützung von den BCrypt-Algorithmus.

    PHP-Versionen 5.3 und höher haben native Unterstützung für BCrypt, so können Sie die PHP-Funktion password_hash() hash ein Passwort. Es ist ein compatibility pack für Versionen vor 5.5.

    //Hash a new password for storing in the database.
    //The function automatically generates a cryptographically safe salt.
    $hashToStoreInDb = password_hash($password, PASSWORD_BCRYPT);
    
    //Check if the hash of the entered login password, matches the stored hash.
    //The salt and the cost factor will be extracted from $existingHashFromDb.
    $isPasswordCorrect = password_verify($password, $existingHashFromDb);

    In jedem Fall Sie sind richtig bei verwerfen, MD5 und der Wechsel zu einem anderen Algorithmus. Stellen Sie sicher, dass Sie verwenden einen Algorithmus mit einem Kostenfaktor wie BCrypt oder PBKDF2, schnelle algorithmen wie SHA* nicht entsprechenden hash-Passwörter. Das Salzen ist obligatorisch, wenn das Salz kann in der Datenbank gespeichert werden, es erfüllt seinen Zweck, auch wenn es bekannt ist.

    InformationsquelleAutor martinstoeckli

  2. 2

    look in diesem Teil von meinem code, den ich verwenden, registrieren Sie einen Benutzer:

    public function addUser($data){
    $sql = "INSERT INTO `user` salt=" . $this->db->escape($salt = substr(md5(uniqid(rand(), true)), 0, 9)) .", password=".$this->db->escape(sha1($salt . sha1($salt . sha1($data['password'])))).".......";
    $this_>db->query($sql);

    Den Informationen von salt und Passwort werden gespeichert in Ihrem Benutzer-Tabelle.
    Um die Informationen abzurufen, und überprüfen Sie das Kennwort, die Sie dies tun:

    $query = $this->CI->db->query("SELECT * FROM `user` WHERE email =".$this->CI->db->escape($email)." AND password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1(" . $this->CI->db->escape($password) . ")))))");

    InformationsquelleAutor Bak

  3. 1

    Hier sind einige einfache Lösungen.

    • Können Sie sha* hash-Funktionen , seien Sie vorsichtig bei der Verwendung md5 da es eine
      höhere Kollisionsrate als sha,

    • und auch über Ihr problem, mit Salz, es ist ok, wenn Sie nicht Salz Ihr
      Passwort, so stellen Sie sicher, dass Ihre Nutzer mit einem sehr guten Passwort mit einer Kombination von
      unteren und oberen Fällen und mit zahlen und machen Sie zu langwierig.

    Möchte ich Ihnen raten, zu verwenden bcrypt aber da Sie mit 5.2 es hat einen bug auf, die version und bestimmte Passwort libs wie PHPPASS und PHPLIB Sorgen Nur zu 5.3 und oben. Beste Möglichkeit ist ein upgrade auf 5.3 so dass Sie verwenden die php-libs, sondern kümmern sich um die volle Achtung der Skripte.

    InformationsquelleAutor tomexsans

  4. 1

    Soweit ich weiß, codeigniter nicht über eine eingebaute Funktion für diese…

    Machen einen hash mit PHP müssen Sie

    • das Passwort
    • eine echte zufällige Salz
    • eine langsame hashing-Algorithmus

    Durch PHP Ihr können eine echte zufällige Salz mithilfe mcrypt_create_iv().

    Machen die hash-Werte, die Sie verwenden können, die crypt() oder password_hash, das unterstützt langsame algorithmen, wie CRYPT_BLOWFISH. Vergessen md5, oder sha1, Sie sind zu schnell, also mit dem richtigen Werkzeug ist es möglich, um herauszufinden, Passwörter gehasht.

    $salt = mcrypt_create_iv(22, MCRYPT_DEV_URANDOM);
    $hash = password_hash($password, PASSWORD_BCRYPT, array('cost' => 11, 'salt' => $salt));

    Den password_hash() Funktion erzeugen kann, die eine echte zufällige Salz automatisch, so dass Sie nicht haben, generieren Sie manuell, wenn Sie nicht wollen. Das Salz wird angehängt werden, um den hash.

    Leider PHP 5.2 nicht CRYPT_BLOWFISH – Unterstützung. So verwenden Sie die PHPASS lib.

    Wenn man kann password_hash () – Funktion, es ist besser, nicht zu generieren, die ein Salz auf Ihre eigenen, ist dies sicher von der Funktion selbst.
    Ist es möglich zu speichern, dass Salz? Was ist, wenn ich will, migrieren auf einen anderen server, sind die Salze verloren? Machen Sie von der Umgebung abhängig sind?
    Der resultierende hash-Wert wird das Salz im Klartext, das ist der übliche Weg, um das Salz. Die Funktion password_verify() extrahieren wird das Salz aus diesem hash. Ich versuchte zu erklären, dieses format in einem anderen Antwort.
    Danke! Ich wusste es nicht, ich habe immer gespeichert, das Salz in einer separaten Spalte.

    InformationsquelleAutor inf3rno

Kostenlose Online-Tests