ホームページ >データベース >mysql チュートリアル >PHPのpassword_verify関数を使用してユーザーのパスワードを安全に検証するにはどうすればよいですか?
PHP を使用した暗号化されたパスワードの復号化
多くのアプリケーションは、password_hash などの暗号化アルゴリズムを使用してユーザー パスワードを安全に保存します。ただし、ログイン試行を検証するときは、入力されたパスワードを暗号化されて保存されたバージョンと比較することが重要です。
暗号化の問題
password_hash は、Bcrypt を採用しています。ウェイ ハッシュ アルゴリズム。つまり、暗号化されたパスワードを元に戻したり復号したりすることはできません。これは、データベースが侵害された場合でも、攻撃者が平文のパスワードにアクセスできないようにするセキュリティ機能です。
解決策: パスワードの検証
ユーザー パスワードを検証するには、password_verify 関数を使用します。
<code class="php">if (password_verify('input_password', $encrypted_password)) { // Password matches! } else { // Invalid password. }</code>
この関数は、入力されたパスワードと暗号化されたバージョンを比較し、一致する場合は true を返します。
SQL クエリの変更
SQL クエリに入力パスワードを含める代わりに、パラメータ化を使用します。
<code class="php">$sql_script = 'SELECT * FROM USERS WHERE username=?';</code>
これにより、悪意のあるユーザーによるクエリの操作が防止され、SQL インジェクション攻撃から保護されます。
例
password_verify の使用例を次に示します:
<code class="php">$username = $_POST['username']; $input_password = $_POST['password']; $sql_script = 'SELECT * FROM USERS WHERE username=?'; if ($result = $conn->query($sql_script, $username)) { if ($user = $result->fetch_assoc()) { if (password_verify($input_password, $user['password'])) { // Login successful! } else { // Invalid password. } } else { // User not found. } }</code>
以上がPHPのpassword_verify関数を使用してユーザーのパスワードを安全に検証するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。