3

この美しい質問を読んだ後:パスワードに文字列よりもchar []が優先されるのはなぜですか?、これがサーブレットベースのWebアプリケーションにどのように適用されるかについて興味があります。UIにパスワードの入力フィールドがあるとすると、パスワードは取得可能であり、これを使用して。request.getParameter("passwordFieldName")を返しますString。その後、それをに変換してもchar[]、GCがオブジェクトをクリアするのを待つ必要がありStringます。

また、パスワードハッシュに使用することを検討している暗号化/ハッシュライブラリの多くには、checkPassword(plaintext, hashed)2つの文字列を受け取り、入力されたプレーンテキスト文字列がに等しいハッシュを与える場合にtrueを返すようなメソッドがありますhashed。これにより、があったとしても、コンストラクターchar[]を使用して配列を文字列に変換する必要があります。new String(char[])

保存されている表現と比較するために、パスワードを文字列として使用することは避けられないように思われます。その小さなウィンドウでの攻撃が心配な場合、どのように身を守るのですか?

4

1 に答える 1

2

これは過剰反応であり、実際には単なる「セキュリティシアター」です。攻撃者にとって、Javaアプリケーションでパスワードとして長い文字列を使用することがまったく望ましいというシナリオは実際にはありません。メモリ枯渇攻撃が懸念される場合は、どこにも文字列を使用しないでください。

そうは言っても、CWE-521は、パスワードには最大サイズが必要であると述べています。文字列には実際には最大サイズがありません。aを使用することchar[x]は、最大サイズを適用するための良い方法です。

于 2012-12-10T17:17:27.277 に答える