この美しい質問を読んだ後:パスワードに文字列よりもchar []が優先されるのはなぜですか?、これがサーブレットベースのWebアプリケーションにどのように適用されるかについて興味があります。UIにパスワードの入力フィールドがあるとすると、パスワードは取得可能であり、これを使用して。request.getParameter("passwordFieldName")
を返しますString
。その後、それをに変換してもchar[]
、GCがオブジェクトをクリアするのを待つ必要がありString
ます。
また、パスワードハッシュに使用することを検討している暗号化/ハッシュライブラリの多くには、checkPassword(plaintext, hashed)
2つの文字列を受け取り、入力されたプレーンテキスト文字列がに等しいハッシュを与える場合にtrueを返すようなメソッドがありますhashed
。これにより、があったとしても、コンストラクターchar[]
を使用して配列を文字列に変換する必要があります。new String(char[])
保存されている表現と比較するために、パスワードを文字列として使用することは避けられないように思われます。その小さなウィンドウでの攻撃が心配な場合、どのように身を守るのですか?