ユーザー パスワードのクレンジング
安全なアプリケーションを開発する場合、開発者は暗号化して保存する前にユーザーから提供されたパスワードのクレンジングを検討することがよくあります。ただし、ハッシュ化する前にパスワードにクレンジング メカニズムを適用すると、特定の複雑な問題が発生します。
ハッシュ化前のパスワード クレンジングを避ける
escape_string( などの関数を使用してパスワードをクレンジングしないことが最も重要です) )、htmlspecialchars()、またはaddslashes()。この主な理由は、このような前処理が冗長で不必要であるためです。
パスワードの保存に一般的に使用される PHP のpassword_hash() 関数によって生成されたハッシュは、SQL インジェクションの脅威を引き起こしません。ハッシュ プロセスは、パスワードを SQL インジェクションによって悪用できないハッシュに変換します。
ハッシュはクレンジングなしでセキュリティを提供します
ハッシュ関数は特定の文字に特別な意味を割り当てません;したがって、セキュリティを目的としたクレンジングは必要ありません。ユーザーがスペースや特殊文字を含む任意のパスワードを指定できるようにすることで、ハッシュ化により、その内容に関係なく、パスワードのセキュリティが確保されます。
ストレージに関する考慮事項
デフォルトハッシュ メソッド (PASSWORD_BCRYPT) は 60 文字幅のハッシュを生成するため、ストレージにさらに多くのスペースを割り当てることをお勧めします。 VARCHAR(255) または TEXT。ハッシュ アルゴリズムの将来の潜在的な変更に対応します。
クレンジングの無効性の例
パスワード「私は」デザートのトッピングを考えてみましょう。 「<床ワックス>!」。さまざまなサニタイズ方法を適用すると、さまざまな結果が得られます。
ただし、これらの変換は、ハッシュされたパスワードのセキュリティには影響しません。 passwd_verify() は、指定されたパスワードとデータベースから取得されたハッシュ化された同等のパスワードの両方に同じクレンジング メソッドが適用される場合にのみ成功します。
結論
結論としては、回避してください。ハッシュする前に、password_hash() でパスワードをクレンジングします。これは不必要であり、複雑さが生じます。代わりに、ハッシュ アルゴリズムによって提供されるセキュリティを信頼し、潜在的なストレージ要件を考慮してください。
以上がユーザーのパスワードをハッシュする前にクレンジングする必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。