ホームページ > バックエンド開発 > PHPチュートリアル > PHP で双方向暗号化を使用してパスワードを安全に保存および取得するにはどうすればよいですか?

PHP で双方向暗号化を使用してパスワードを安全に保存および取得するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-19 12:08:39
オリジナル
805 人が閲覧しました

How Can I Securely Store and Retrieve Passwords Using Two-Way Encryption in PHP?

双方向暗号化: 取得可能なパスワードの保存

概要

パスワードを許可しながら安全に保存するユーザーがそれらを取得するのは困難です。対称暗号化はこのニーズに対応できますが、実装の微妙な違いを理解することが重要です。

PHP の暗号化と復号化

PHP でパスワードを暗号化および復号化するには、 mcrypt または OpenSSL ライブラリ。 mcrypt の使用例を次に示します。

function encrypt($password, $key)
{
    $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_DEV_URANDOM);
    return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv);
}

function decrypt($encryptedPassword, $key)
{
    $iv = substr($encryptedPassword, 0, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
    $password = substr($encryptedPassword, mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC));
    return mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $password, MCRYPT_MODE_CBC, $iv);
}
ログイン後にコピー

最も安全なアルゴリズム

最適な暗号化アルゴリズムは、特定の使用例によって異なります。パスワードを保存する場合、CBC または CTR モードの AES-256 (Rijndael) は一般に堅牢であると考えられています。

秘密キーの保存

秘密キーを安全に保存することが重要です。推奨されるアプローチの 1 つは、ユーザーのパスワードとサーバー側のソルトを組み合わせて使用​​することです。 PHP では、これは以下を使用して実現できます。

$salt = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM);
$key = hash('sha256', $userPassword . $salt);
ログイン後にコピー

ユーザー入力として秘密キー

ユーザーが信頼できる場合は、取得時に秘密キーの提供を求めます。パスワードを使用すると、セキュリティを強化できます。これにより、サーバー側の侵害から保護されます。

セキュリティ リスク

暗号化されたパスワードは、次の影響を受ける可能性があります。

  • キー漏洩
  • ブルートフォース攻撃
  • リプレイ攻撃
  • 傍受
  • 既知の平文攻撃

軽減戦略

これらのリスクを軽減するには、以下を実装します。

  • 強力な暗号化アルゴリズム
  • 安全なキーの保管
  • パスワードハッシュ
  • 復号化試行時のタイムアウト
  • 2 要素認証

以上がPHP で双方向暗号化を使用してパスワードを安全に保存および取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート