ホームページ >データベース >mysql チュートリアル >ソルトされたパスワード認証が常に True を返すのはなぜですか?

ソルトされたパスワード認証が常に True を返すのはなぜですか?

DDD
DDDオリジナル
2024-12-11 21:35:11874ブラウズ

Why is My Salted Password Authentication Always Returning True?

認証用のソルト付きパスワードの撤回

データベースに保存されたソルト付きパスワードを使用してメンバー サイトを実装する場合、ログイン メカニズムには細心の注意が必要です。ソルト付きパスワードのアプローチを使用するとセキュリティが強化されますが、ユーザー資格情報の検証に課題が生じる可能性もあります。

問題:

メンバーのログイン ページでエラーが発生します。エントリは、ユーザーの存在を確認するためのチェックに合格したようです。具体的には、$result === false の評価は常に false を返し、予期した動作を妨げます。

解決策:

問題の根本原因はアプローチにあります。データベースからパスワード ハッシュを取得します。ユーザー資格情報を検証するには、まず、指定されたユーザー名に対応するソルト付きパスワード ハッシュを取得する必要があります:

$saltQuery = "SELECT salt FROM users WHERE name = '$name';";
$result = mysqli_query($connect, $saltQuery);
$row = mysqli_fetch_assoc($result);
$salt = $row['salt'];

ソルトを取得したら、それを使用して指定されたパスワードをハッシュする必要があります:

$saltedPW = $password.$salt;
$hashedPW = hash('sha256', $saltedPW);

結果としてハッシュ化されたパスワードは、ユーザーのデータベースを照会するために使用されます。存在:

$sqlQuery = "SELECT * FROM users WHERE name = '$name' AND password = '$hashedPW'";

さらなる考慮事項:

パスワードを検証するときは、安全で時間のかかる安全性を提供する bcrypt や Argon2 などの強力なパスワード ハッシュ関数を使用することが重要です。ハッシュアルゴリズム。さらに、SQL インジェクション攻撃を防ぐためにプリペアド ステートメントを使用する必要があります。

以上がソルトされたパスワード認証が常に True を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。