PHP でのパスワード ハッシュの復号: Bcrypt では不可能
暗号化の基本概念の 1 つは、ハッシュ関数の不可逆的な性質です。 PHP のpassword_hash() 関数で使用される基礎となるアルゴリズムである Bcrypt は、このカテゴリに分類されます。パスワードがハッシュ化されると、元の値を取得することはできなくなります。
パスワード検証について
ユーザーを認証するには、ハッシュを復号化するよりも安全な方法があります。パスワードの検証。これには、ユーザーが入力したパスワードと保存されているハッシュを比較することが含まれます。 PHP は、特にこの目的のために、password_verify() 関数を提供します。
パスワード検証のコード例
<code class="php">$hash = 'y$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; if (password_verify('rasmuslerdorf', $hash)) { echo 'Password is valid!'; } else { echo 'Invalid password.'; }</code>
変更された SQL クエリ
現在 PHP でパスワードを検証しているため、ユーザー データを取得する SQL クエリにはユーザー名のみを含める必要があります:
<code class="sql">$sql_script = 'SELECT * FROM USERS WHERE username=?';</code>
SQL インジェクションからの保護
サンプル SQL クエリは SQL インジェクション攻撃の影響を受けやすいです。このリスクを軽減するには、プリペアド ステートメントまたはパラメータ化されたクエリを使用して入力をパラメータ化します。
結論
Bcrypt でパスワードをハッシュするとセキュリティが確保されますが、それは方法がないことも意味します。それらを復号化します。代わりに、パスワード検証を使用して、入力されたパスワードを保存されているハッシュと比較することによってユーザーを認証します。さらに、適切な入力パラメータ化を使用して、SQL クエリをインジェクション攻撃から常に保護してください。
以上がPHP で Bcrypt パスワード ハッシュを復号化できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。