PHPのpassword_verify関数を使用してユーザーのパスワードを安全に検証するにはどうすればよいですか?

DDD
リリース: 2024-10-28 11:16:01
オリジナル
396 人が閲覧しました

How to Verify User Passwords Securely with PHP's password_verify Function?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!