JavaはURLエンコード文字列にURLEncoder
クラスを提供します。しかし、it is considered insecure to store passwords as Strings。このコードはHttpsURLConnection
出力ストリームwr
で十分安全なPOST経由でパスワードを送信しますか?パスワードを安全にURLエンコード
try (DataOutputStream wr = new DataOutputStream(con.getOutputStream())) {
// Write some post params
for (char c : pass) {
wr.writeBytes(URLEncoder.encode(String.valueOf(c), "UTF-8"));
}
// Write some more
}
一方では、Stringsを使用しています。一方、これらの文字列は1文字の長さであり、エンコーディング後は概念的に同じです。また、マルチバイト文字では失敗する可能性があります。攻撃者はこれらの1-char文字列をメモリに配置して元のパスワードを再構築できますか?これを行うより良い方法はありますか?
私はあなたの言いたいことはありません。メモリにパスワードを表現する方法については言及していません。 *あなた*は*送信*パスワードについて話しています。それは同じではない*同じですか? – GhostCat
@GhostCat私は安全でない形式でパスワードをメモリに保存せずにパスワードを送信する方法について話しています。 –
@GhostCat具体的には、自分のパスワードの個々の文字をストリングとして保存するのが安全かどうか疑問に思っています。攻撃者はこれらの文字列を見つけてパスワードを再構築できますか? –