1

私は自分のプログラムにできる限り最高のパスワード安全性を提供しようとしています.いくつかの調査の後、すべての道は私の最良の選択肢としてPHPASSで終わるようです. 自分が何をしているのかを理解するために、いくつかの実験的試行を行っています。うまくいっていません笑私が見る限り、PHPASS はパスワードにランダムなソルトを追加し、それをハッシュして、DB に保存できるようにします. ユーザーが登録されました!.これは私にとってはうまく機能します.ユーザーがログインすると、DBからハッシュを取得し、ユーザーがログイン時に入力したパスワードから作成されたハッシュと比較しますが、今回は作成されているため、新しいハッシュは異なります別の塩から?そして、DBに保存されているものと一致しません.どこかで私は愚かで、他の誰もが得る明らかな何かが欠けています. 

4

3 に答える 3

0

助けてくれてありがとう、今は動いているようですが、もしよろしければチェックしていただければ、他の人が役に立つと思うかもしれません。ファイルをテストしているだけなので、コアはOKです。

これは、パスワードをハッシュして保存する REG コードです。

if(isset($_POST['submit'])) {

    $username = $_POST['username'];
    $password = $_POST['password'];
    $hash = password_hash($password, PASSWORD_BCRYPT);

    if (empty($_POST) === false){
    mysql_query("INSERT INTO `accounts` VALUES ('', '$username', '$hash') ");
        echo 'Done';
    }else{
        echo 'Not Done';
    }
}   ?>

そして、これはログインです

<?php
require('../password/lib/password.php');
require_once("connect.php");

if(isset($_POST['submit'])) {

    $username = $_POST['username'];
    $safe_username = mysql_real_escape_string($username);
    $password = $_POST['password'];

    $query = "SELECT * FROM accounts WHERE username = '$safe_username'";
    $result = mysql_query($query);
    $row = mysql_fetch_assoc($result);
    $hash = $row['password'];

    if (password_verify($password, $hash)) {
        echo 'Logged in';
    } else {
        echo 'Not logged in';
    }

} else {
    echo " Not submitted";
}

どう思いますか?

于 2013-12-11T20:03:42.387 に答える