[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
2022-03-16 21:52:22
質問
Swingでは、パスワードのフィールドに
getPassword()
(を返します)。
char[]
) メソッドの代わりに、通常の
getText()
(を返します。
String
) メソッドを使用します。同じように、私は
String
を使用して、パスワードを処理します。
なぜ
String
パスワードはセキュリティにとって脅威となるのでしょうか?
を使うのは不便に感じる。
char[]
.
解決方法は?
文字列は不変である
. つまり、一度作成した
String
他のプロセスがメモリダンプを行った場合、(
リフレクション
) の前にデータを取り除くことができます。
ガベージコレクション
が蹴られる。
配列であれば、使い終わった後に明示的にデータを消去することができます。好きなもので配列を上書きすることができ、ガベージコレクションの前でもパスワードはシステムのどこにも存在しないことになります。
そうそう、この
は
を使用しても、セキュリティ上の懸念はありません。
char[]
は、攻撃者の機会の窓を減らすだけであり、この特定のタイプの攻撃にしか対応できません。
コメントで指摘されているように、ガベージコレクタによって移動される配列は、メモリ内にデータの浮遊コピーを残す可能性があります。これは実装に依存するものだと思います。ガベージコレクタは
かもしれない
このようなことを避けるために、すべてのメモリをクリアする必要があります。たとえそうであったとしても、この間は
char[]
には、実際の文字が攻撃窓として含まれています。
関連
-
[解決済み] std::string を const char* または char* に変換する方法
-
サーブレットクラスのインスタンス化エラーの解決法
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] YAML の文字列を複数行に渡って分割するには?
-
[解決済み] なぜlist.join(string)ではなくstring.join(list)なのでしょうか?
-
[解決済み] PHPでパスワードをハッシュ化するためにbcryptを使用するにはどうすればよいですか?
-
[解決済み] Stringでswitch文が使えないのはなぜですか?
-
[解決済み】PHPパスワードのハッシュとソルトの安全性について
-
[解決済み】文字列の中にある文字列(実際はchar)の出現回数を数えるには?
-
[解決済み】std::stringからchar*への変換
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
final, finally, finalizeの違いについて話してください。
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
Javaクラスローダーにソースコードから潜り込む
-
Methodのinvokeメソッド実装のJavaリフレクション
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
javaでクラスを作成すると、enclosing classでないように見える
-
mavenプロジェクトのテストエラー java.lang.ClassNotFoundException: org.glassfish.jersey.client.ClientConfig の問題を解決する。
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
IDEA パッケージステートメントの欠落
-
このラインで複数のマーカーを解決する方法