Javaアプリケーションにログインフォームがあるとします。変数にusenameとpasswordを割り当てる必要があります。ハッシュまたはHMACパスワードをハッシュ化して、認証ステップのためだけに保持する瞬間(キャッシュなし)ですが、それでもなおRawパスワードに変数を割り当てる必要があります。
Q1)生のパスワード(文字列、文字配列など)を格納するために使用する必要がある変数の種類は何ですか?
Q2)使用後、Rawパスワードの変数をどのように処理する必要がありますか(つまり、関数がスコープ外になった後、ガベージコレクターがそれをダンプできるようにします)?
Q3)他に何かありますか?
これはJava関連の質問です。セキュリティに非常に近いため、ここに投稿しました。
C/C++については、ほとんど考えていません。彼らです
他のライブラリに依存しない低システムレベル変数にパスワードを保存します。つまりパスワードをchar []に格納します。これは、フレームワークによって提供されるQString(Qt)タイプの変数よりも非常にネイティブです。
使用後すぐにパスワードchar []を上書きします。その後、それを破壊します。
メモリ内のパスワードの時間をできるだけ短くします。
一般的なガイダンスはchar []を使用することです。これは絶対確実ではありませんが、一度使用するとパスワードの文字を上書きできます。文字列では不可能なため、文字は不変であり、存続します。ガベージコレクションまでヒープ上。
これについては StackOverflow でも詳しく説明しています。