PHPのパスワード暗号化と安全な保管方法

WBOY
リリース: 2023-06-30 09:28:02
オリジナル
1594 人が閲覧しました

インターネットの継続的な発展と普及に伴い、オンラインでさまざまな操作を行う際にユーザーのパスワードのセキュリティに対する注目が高まっています。一般的に使用されるサーバー側プログラミング言語である PHP には、パスワード暗号化と安全なストレージのための独自の実装メソッドのセットもあります。この記事では、PHP がパスワードを暗号化して保護する方法を紹介し、読者がユーザー パスワードを理解し、保護できるようにします。

1. パスワード暗号化

パスワード暗号化とは、ユーザーのパスワードを変換して、一見ランダムな文字列を生成することを指します。たとえハッカーがこの文字列を入手したとしても、元のパスワードに戻すことはできません。一般的なパスワード暗号化アルゴリズムには、MD5、SHA1、bcrypt などがあります。

  1. 従来の暗号化アルゴリズム - MD5 および SHA1

MD5 および SHA1 は、最も一般的なパスワード暗号化アルゴリズムの 1 つです。 PHP では、パスワード暗号化に md5() 関数と sha1() 関数を使用できます。ただし、これらのアルゴリズムは一方向暗号化であり、元のパスワードに復号化できないため、ハッカーによって解読される危険性がますます高まっています。したがって、パスワード暗号化に MD5 と SHA1 を使用することはお勧めできません。

サンプル コード:
$password = '123456';
$encrypted_pa​​ssword = md5($password);
echo $encrypted_pa​​ssword; // 出力: e10adc3949ba59abbe56e057f20f883e

  1. 安全なパスワード暗号化アルゴリズム-bcrypt

bcrypt は、Blowfish 暗号化アルゴリズムに基づいた、安全で信頼性の高いパスワード暗号化アルゴリズムです。 PHP では、password_hash() 関数を使用してパスワードを暗号化できます。 PHP 5.5.0以降でサポートされている方式です。

サンプルコード:
$password = '123456';
$encrypted_pa​​ssword = password_hash($password, PASSWORD_DEFAULT);
echo $encrypted_pa​​ssword; // 出力: $2y$10$IwyKg5WIr0ZG6oWjbja0zuxw8FdW8GmKyMzykluZfoyvG00v4OMu6

この関数は、ランダムなソルト値を自動的に生成し、そのソルト値をパスワードと混合して暗号化します。実行ごとに異なる暗号化結果が生成され、パスワードのセキュリティが強化されます。

2. 安全なストレージ

パスワード暗号化はパスワード保護の一部にすぎません。ユーザーのパスワードをより適切に保護するには、安全なストレージも必要です。一般的な安全な保管方法をいくつか紹介します。

  1. データベース ストレージ

ほとんどの場合、ユーザー パスワードはデータベースに保存されます。パスワードをデータベースに保存する前に、上記のパスワード暗号化アルゴリズムを使用して暗号化する必要があります。通常、パスワードフィールドのデータ型はvarcharであり、適切な長さが設定されます。

  1. ソルト値の保存

パスワードのセキュリティを高めるために、「ソルト」メソッドを使用して、暗号化されたパスワードをより複雑な方法で保存できます。ソルト値は、パスワードと混合されて暗号化されて保存されるランダムな文字列であるため、同じパスワードであっても、異なるユーザーによって保存される暗号文は異なります。

サンプルコード:
$password = '123456';
$salt = 'AbCdEfGh';
$encrypted_pa​​ssword = md5($password.$salt);
echo $encrypted_pa​​ssword ; // 出力: a62d15e1e7be18bc451f780ff573a4e1

  1. 暗号化接続ストレージ

データベース ストレージとソルト値ストレージに加えて、他の暗号化方法を使用してユーザー パスワードを保存することもできます。 RSA暗号化として。 RSA は、公開キーと秘密キーの両方を生成する非対称暗号化アルゴリズムです。ユーザーのパスワードは、まず公開キーで暗号化され、次にサーバーの秘密キーで復号化されます。

サンプルコード:
$password = '123456';
$public_key = 'public_key_path.pem';
$private_key = 'private_key_path.pem';

$ encrypted_pa​​ssword = '';
openssl_public_encrypt($password, $encrypted_pa​​ssword, file_get_contents($public_key));
file_put_contents('encrypted_pa​​ssword.txt', $encrypted_pa​​ssword);

$decrypted_pa​​ssword = '';
openssl_private_decrypt(file_get_contents('encrypted_pa​​ssword.txt'), $decrypted_pa​​ssword, file_get_contents($private_key));
echo $decrypted_pa​​ssword; // 出力: 123456

上記はパスワード暗号化のための PHP であり、セキュリティ いくつかの基本的な保管方法。ユーザーのパスワードをより適切に保護するには、安全で信頼性の高い暗号化アルゴリズムを使用し、適切な保存方法を採用することをお勧めします。さらに、ユーザー パスワードのセキュリティを確保するために、SQL インジェクションや XSS 攻撃などの一般的なセキュリティ脆弱性の防止にも注意を払う必要があります。

以上がPHPのパスワード暗号化と安全な保管方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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