スクリプトでパスワードハッシュが正しく機能していません。パスワードのハッシュと検証が正しく機能しない
ここに私の統合:私はそれを確認する方法
register.php
$password = password_hash(md5(sha1($_POST['password']) . $salt), PASSWORD_DEFAULT);
そして、ここで:
Login.php
$password = md5(sha1($_POST['password']) . $salt);
$check = $mysqli->query("SELECT password FROM accounts WHERE email = '$email'");
$passw_hash = $check->fetch_assoc();
if (password_verify($password, $passw_hash["password"])) {
// LOGIN SUCCESSFULLY
}
私のPHPのバージョン:5.5
それとも、暗号化するために他の方法を持っている場合、パスワードは私に知らせてください。
UPDATE
1- VARCHARからVARCHAR(250)に変更されたパスワードのカラムサイズ(60)
2- MD5、SHA1、及びに対するパスワードを保護するためのコードをクリーニングなど他のすべての暗号化を削除SQLインジェクション。ハッシュされたパスワードの
例:
純粋なテキスト:ハッシュされgoogle
:$2y$10$0Bd5Uv09Jg50QZZ4Iz7F2.WGV3MpYkScg9vuTONWmUCMYPJ3qDukC
私はmysqliのを使用してプリペアドステートメントと私のデータベースに新しいメンバーを挿入します。
$st = $mysqli->prepare("
INSERT INTO
accounts(
username,
password,
date
) VALUES (
?,
?,
?
)");
$st->bind_param('sss', $username, $password, $date);
$st->execute();
を
こんにちは、まだ解決されていない、私はあなたのように言った。 –
「解決されていない」とはどういう意味ですか?ここで重要なのは、password_hash()が非常に長いテキストを生成できることです(現在のデフォルトは60文字です)ので、フィールドを大きくすると必要な長さが許されます。次に、PHPチームはメソッドにアルゴリズムを追加しています。これは、ハッシュが成長し、成長することを意味します。また、ユーザーのパスワードやパスフレーズの使用を制限したくない場合もあります。変更の余地を残すことが最善です。パスワードを格納するデータベースの列のサイズはどれくらいですか? –
私のサイズはVARCHAR(60) –