ホームページ > バックエンド開発 > PHPチュートリアル > ユーザーのパスワードをハッシュする前にクレンジングする必要がありますか?

ユーザーのパスワードをハッシュする前にクレンジングする必要がありますか?

DDD
リリース: 2024-12-31 04:27:08
オリジナル
266 人が閲覧しました

Should I Cleanse User Passwords Before Hashing Them?

ユーザー パスワードのクレンジング

安全なアプリケーションを開発する場合、開発者は暗号化して保存する前にユーザーから提供されたパスワードのクレンジングを検討することがよくあります。ただし、ハッシュ化する前にパスワードにクレンジング メカニズムを適用すると、特定の複雑な問題が発生します。

ハッシュ化前のパスワード クレンジングを避ける

escape_string( などの関数を使用してパスワードをクレンジングしないことが最も重要です) )、htmlspecialchars()、またはaddslashes()。この主な理由は、このような前処理が冗長で不必要であるためです。

パスワードの保存に一般的に使用される PHP のpassword_hash() 関数によって生成されたハッシュは、SQL インジェクションの脅威を引き起こしません。ハッシュ プロセスは、パスワードを SQL インジェクションによって悪用できないハッシュに変換します。

ハッシュはクレンジングなしでセキュリティを提供します

ハッシュ関数は特定の文字に特別な意味を割り当てません;したがって、セキュリティを目的としたクレンジングは必要ありません。ユーザーがスペースや特殊文字を含む任意のパスワードを指定できるようにすることで、ハッシュ化により、その内容に関係なく、パスワードのセキュリティが確保されます。

ストレージに関する考慮事項

デフォルトハッシュ メソッド (PASSWORD_BCRYPT) は 60 文字幅のハッシュを生成するため、ストレージにさらに多くのスペースを割り当てることをお勧めします。 VARCHAR(255) または TEXT。ハッシュ アルゴリズムの将来の潜在的な変更に対応します。

クレンジングの無効性の例

パスワード「私は」デザートのトッピングを考えてみましょう。 「<床ワックス>!」。さまざまなサニタイズ方法を適用すると、さまざまな結果が得られます。

  • trim() は末尾のスペースを削除します
  • htmlentities() および htmlspecialchars() は特殊文字と二重引用符をエンコードします
  • addslashes( ) エスケープ文字を追加します
  • strip_tags() HTML を削除しますタグ

ただし、これらの変換は、ハッシュされたパスワードのセキュリティには影響しません。 passwd_verify() は、指定されたパスワードとデータベースから取得されたハッシュ化された同等のパスワードの両方に同じクレンジング メソッドが適用される場合にのみ成功します。

結論

結論としては、回避してください。ハッシュする前に、password_hash() でパスワードをクレンジングします。これは不必要であり、複雑さが生じます。代わりに、ハッシュ アルゴリズムによって提供されるセキュリティを信頼し、潜在的なストレージ要件を考慮してください。

以上がユーザーのパスワードをハッシュする前にクレンジングする必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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