PHP 7でユーザーパスワードを保護する方法
PHP 7でユーザーパスワードを保護するには、強力なハッシュ、塩漬け、および適切な保管慣行に焦点を当てた多層的なアプローチが必要です。 パスワードをプレーンテキストに保存しないでください。 コアの原則は、データベースが侵害されていても、元のパスワードを取得するために計算的に実行不可能にすることです。 これには、Argon2i(推奨)、Bcrypt、またはScryptなどの強力な一元配置ハッシュアルゴリズムの使用が含まれます。 これらのアルゴリズムは遅くなるように設計されており、ブルートフォース攻撃を非常に困難にします。 さらに、各パスワードは一意に塩漬けする必要があります。塩は、ハッシュする前にパスワードに追加されたランダムな文字列です。これにより、攻撃者は、事前に計算されたレインボーテーブルを使用してパスワードを割ることができなくなります。 塩は、パスワードごとに一意であり、データベース内のハッシュされたパスワードと一緒に保存する必要があります。 最後に、ハッシュされたパスワードと塩はデータベースに安全に保存する必要があります。理想的には適切なアクセス制御と暗号化が安静時に保存する必要があります。 ここに故障があります:
-
強力で遅いアルゴリズムを選択します。argon2iは、GPUベースの亀裂攻撃に対する耐性により、現在最良の選択肢と見なされています。 BcryptとScryptも強力な選択です。 MD5、SHA1、および簡単にひび割れた他の古いアルゴリズムを避けてください。
-
各パスワードに一意の塩を使用します。 ハッシュされたパスワードと一緒に塩を保管します。 塩を再利用しないでください。
- 十分な数の反復を使用してください。ハッシュアルゴリズムのコスト係数(たとえば、bcryptのラウンド数またはargon2iのメモリコストの数)は、割れて計算上の高価になるのに十分な高さでなければなりません。 この値は、コンピューティングパワーが向上するにつれて定期的にレビューし、増加する必要があります。
- 定期的にハッシュアルゴリズムを更新します。
-
password_hash()
およびpassword_verify()
:これらの組み込みのPHP関数は、BCRYPTを使用してパスワードをハッシュおよび検証する比較的簡単な方法を提供します。 Bcryptは優れたアルゴリズムですが、Argon2iは一般的に好まれています。 -
passwordlib:このライブラリは、Argon2i、bcrypt、scrypt、およびハンドルの塩分および反復カウントマネジメントを含むさまざまなハッシュアルゴリズムをサポートしています。強力なアルゴリズムの選択と使用のプロセスを簡素化します。これは、高度なセキュリティニーズのためのより強力で多用途のオプションです。 一部のシナリオでは、組み込みのパスワード機能よりも優れたパフォーマンスとセキュリティを提供します。
-
ライブラリの選択は、プロジェクトの複雑さとセキュリティ要件に依存します。 簡単なアプリケーションの場合、組み込みおよび
関数で十分である可能性があります。 より複雑なまたはセキュリティに敏感なアプリケーションの場合、パスワードリブやナトリウムなどのライブラリをより良いアルゴリズムの管理と機能にするために推奨されます。
セキュアパスワードストレージを既存のPHP 7認証システムと統合するにはどうすればよいですか? 特定の手順は現在のシステムのアーキテクチャに依存しますが、一般的なプロセスには次のものが含まれます。
-
ハッシュアルゴリズムとライブラリを選択する:強力なアルゴリズム(Argon2i推奨)と適切なライブラリ(PasswordLibまたはナトリウム、または必要に応じて組み込み機能を利用)を選択します。アルゴリズムと塩、塩とハッシュドパスワードの両方をデータベースに保存します。 同じアルゴリズムと塩を使用してユーザーが提供するパスワードをハッシュし、結果を保存されたハッシュパスワードと比較します。 これには、多くの場合、既存のパスワードを新しいアルゴリズムでハッシュし、データベースを更新する必要があります。 このプロセスは、サービスの混乱を避けるために慎重に計画する必要があります。
-
パスワードの実装機能は機能します。パスワードの回復の質問に関連する脆弱性。
- 注入攻撃を防ぐために、ユーザー入力を常に消毒および検証することを忘れないでください。 更新された認証システムを徹底的にテストして、安全で機能していることを確認してください。 進化する脅威に適応するために、セキュリティプラクティスを定期的に確認および更新してください。
以上がPHP 7でユーザーパスワードを保護する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。