2

次のコードがあります

public static void main(String[] args) {

    String plainTextpassword = "plaintextpassword";
    String encryptedPassword = getMd5Password(plainTextpassword);
}

ガベージ コレクションの前に、メモリ ダンプなどを使用して誰かがパスワードを取得できる可能性はありますか。だとしたらどうすれば乗り越えられるのだろう。

4

2 に答える 2

1

ガベージ コレクションの前に、メモリ ダンプなどを使用して、誰かが私のパスワードを取得できる可能性はありますか

はい、メモリの内容がすぐに上書きされないため、ガベージ コレクションの後でも可能です。それは悪いニュースです。

幸いなことに、OS はプロセス間でアドレス空間を分離する必要があります。時折、この分離を克服するために悪用できるバグが見つかるため、そうすべきだと書きました。ただし、そのようなバグが見つかった場合、パスワード保護は問題が最も少ないものです。だから私はそれについて心配しません。

したがって、発生する最も深刻な事態は、自分のプログラムのプロセスで何かが機能しなくなることです。これは、コードのバグが原因であるか、バグのあるライブラリを使用していることが原因である可能性があります。ただし、プログラムにバグがなく (ほとんどありませんが)、OS にもバグがなく (可能性は低いですが、自分のプログラムにバグがない可能性が高い)、パスワードは安全なはずです。

于 2013-01-05T15:14:21.757 に答える
0

私が収集した事実によると、char配列(char [])を使用することは、パスワードを保存するためのベストプラクティスです。

「文字列は不変であるため、変更すると新しい文字列が生成されるため、文字列の内容を変更する方法はありませんが、char[] の場合、すべての要素を空白またはゼロに設定できます。そのため、パスワードを文字配列に保存すると、セキュリティが明らかに軽減されますパスワードを盗む危険があります。」

続きを読む

于 2013-01-05T16:03:47.853 に答える