0
私は新しいphpと混同しています...phpパスワードを変更する前に
私は以下のコードを書きましたが、何か動作していません。
シナリオは、DBのパスワードを確認することです。パスワードがOKの場合、応答はOKです。そうでない場合は、検索を停止します。
$currentPassword = preg_replace('/\s+/', '', $_POST['currentPassword']);
$newPassword = preg_replace('/\s+/', '', $_POST['newPassword']);
$ConfirmPassword = preg_replace('/\s+/', '', $_POST['ConfirmPassword']);
$oldpass = IrBuscarPassword($_SESSION['user']['username']);
$hash = password_hash($oldpass, PASSWORD_BCRYPT, ['cost' => 13]);
if (password_verify($currentPassword, $hash)) {
// password valid
$change = true;
} else {
$change = false;
}
そう...これが今の私のコードです...私は、これは良い方法であるかどうかわからないんだけど... してください、これで私を助けることは...
if(isset($_POST['currentPassword']))
{
$currentPassword = $_POST['currentPassword'];
$newPassword = $_POST['newPassword'];
$ConfirmPassword = $_POST['ConfirmPassword'];
//$saltcode = IrBuscarSalt($_SESSION['user']['username']);
$oldpass = IrBuscarPassword($_SESSION['user']['username']);
$hash = password_hash($oldpass, PASSWORD_BCRYPT, ['cost' => 13]);
if (password_verify($oldpass, $hash)) {
// password valid
//echo $oldpass;
$change = true;
} else { echo "bad"; }
}
DBからユーザーを取得します。パスワードが有効であれば、指定された「oldpass」(currentPassword)をpassword_verifyでチェックし、新しいパスワードのハッシュをデータベースに保存します。そうでない場合 - エラーを表示します。 – JimL
私はコードの 'preg_replace'部分をスキップしますが、保存されたハッシュはスペースなしのパスワードからのものであるため、おそらくこれは古いパスワードに必要です。しかし、新しいハッシュのエントロピーを制限する理由はありません – JimL
ユーザの入力パスワードを変更することは悪い考えです。なぜなら、入力した内容がパスワードとして保存されたものと一致しない可能性があるからです。ユーザーが意図的にパスワードの最後にスペースを入れて単純な無差別な攻撃を仕掛けた場合、どうなりますか? – GordonM