sql >> データベース >  >> RDS >> Mysql

phpのpassword_hash()メソッドの使い方..?

    password_verify()のように、ハッシュされていない生のパスワードを確認することになっています。 ハッシュされたパスワードの作成時に使用されたハッシュルーチンを使用して、生のパスワードの再ハッシュを行います。

    password_hash()の結果を見ると このハッシュを作成するために使用されたハッシュルーチンと、その生成方法に関する情報がハッシュに格納されています

    $password = 'FredsTheMan';
    
    $hash = password_hash($password, PASSWORD_BCRYPT);
    
    if (password_verify($password, $hash)) { 
       return true;
    } else {
        return false;
    }
    

    この領域でよくあるもう1つの間違いは、データベーステーブルで使用する列に、ハッシュの完全な結果を保持するのに十分な文字を指定しないことです。

    PASSWORD_BCRYPTを使用して生成されたハッシュは60文字です

    $2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
    

    他のハッシュがフルーレに提供されている場合、60文字より長いハッシュになる可能性があることに注意してください

    つまり、コードは

    である必要があります。
    $this->db->select('password');
    $this->db->from('usersdetails');
    $this->db->where('email', $email);
    $this->db->limit(1);
    $query = $this->db->get();
    $pwd_from_db = $query->row()->password;
    
    if (password_verify($this->input->post('password'), $pwd_from_db)) {
       return true;
    } else {
        return false;
    }
    



    1. 見落とされたT-SQLジェム

    2. Android:SQLiteデータベースの開閉

    3. 日付範囲によるSQLグループ化

    4. SQLを動的に照会しながら、PHPを使用してファイルを優れたものにするためのヘッダーのハードコーディング