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