私のアプリケーションでは、ユーザーがパスワードを入力する部分があります。この断片は回転することができます。 rotateでは、ほとんどのテキストフィールドをonSaveInstanceState
とonActivityCreated
を使って保存して復元します。通常、パスワードをディスクに保存するときは、片方向のハッシュを使用して、この情報が侵害された場合に実行できるダメージの量を制限します。しかし、パスワードが半分しか書かれていない場合、私は片方向のハッシュはできません。復旧可能である必要があります。画面上でのパスワード入力の処理について
私の質問:パスワードをBundle
に入れても安全ですか?または、フラグメントが破棄された場合、単に値を破棄する必要がありますか?次のコードはユーザーのセキュリティ上のリスクですか?
public override void OnSaveInstanceState(Bundle savedInstanceState)
{
base.OnSaveInstanceState(savedInstanceState);
savedInstanceState.PutString("passEditText", _passEditText.Text);
...
}
public override void OnActivityCreated(Bundle savedInstanceState)
{
base.OnActivityCreated(savedInstanceState);
if (savedInstanceState != null)
{
_passEditText.Text = savedInstanceState.GetString("passEditText", "");
...
}
}
私はsavedInstanceStateに行きます。メモリにのみ保存され、パスワードフィールドにも同じことが適用されます。 – rastik
フラグメントには安全な限りSaveFragmentInstanceStateがありますか?部分的/完全なパスワードである 'EditText'を含むメモリ内の任意のオブジェクトと同様に安全である(または安全でない)**です。バンドルの内容をディスクにシリアル化したり、 "PersistableBundle"で安全な情報を配置したりしないでください。 – SushiHangover
@SushiHangover、完璧!それを答えとして加えて、私はあなたにチェックマークをつけます! – flakes