web-dev-qa-db-ja.com

パスワードの最大長を教えてください。

私はWebアプリケーションを作成していますが、私の認証方法の一部はパスワードの長さです。

1つは置くべきですか? (たとえば、50文字ですか?)または、最小の長さ(現在は6文字)を入力する必要があります。

最大長にしないと問題がありますか?

27
jrg

クリアテキストで保存する代わりに、 安全なアルゴリズムを使用してパスワードをハッシュする を行う必要があります。ハッシュ関数は、入力文字列の長さに関係なく、一定の出力サイズになります。

最小長と、おそらく他のいくつかの品質ルールを使用することは、遅延を少しでも防ぐのに役立つので、良い考えです。

サービス拒否攻撃を恐れている場合は、通常の入力フィールドのサーバー側の制限(たとえば、1000バイト)を設定できます。誰かがそのような長いパスワードを使用したいと思うことはほとんどありません。

34

私の推奨:1,024バイト。

パスワードサイズの制限は、廃止された技術要件のために存在していた制限です。最新のパスワードストレージは、パスワードの長さに関係なく、パスワードストレージフィールドを固定サイズにするハッシュに依存する必要があります。 1 MBのパスワードは、誰かがサービス拒否を引き起こそうとしていることを示しているだけなので、表示したくありません。人間が1,024文字(またはそれ以上)のパスワードを使用することはないと思います。これは、実際のDOSを防ぐのに十分小さい値であり、妥当な状況では決して到達できないほど大きい値だと思います。

23
Jeff Ferland

使用するメッセージダイジェスト機能によって異なります。大多数の場合(sha-256、さらにはmd5、sha1など...)は問題ではありません。ただし、bcryptを使用している場合、bcryptには55文字の制限があります。つまり、saltが27バイトの場合、28バイトのパスワードを使用できます。

余談ですが、 CWE-521 には、パスワードの最大長が必要です。しかし、それは最大値を明記しておらず、セキュリティの規範から、それが512kバイト以上になる可能性がある理由はわかりません。

4
rook