In meiner Anwendung habe ich ein Fragment, wo der Benutzer ein Passwort eingibt. Dieses Fragment kann sich drehen. Beim Drehen möchte ich, dass die meisten Textfelder mit onSaveInstanceState
und onActivityCreated
gespeichert und wiederhergestellt werden. Wenn ich ein Passwort auf der Festplatte speichere, verwende ich normalerweise einen Einweg-Hash, um die Menge an Schaden zu begrenzen, die ausgeführt werden kann, wenn diese Information kompromittiert wird. Wenn das Passwort jedoch nur zur Hälfte geschrieben ist, kann ich keinen Oneway-Hash erstellen ... es muss wiederherstellbar sein.Was tun mit einer Passworteingabe auf dem Bildschirm drehen
Also meine Frage: setzt ein Passwort in eine Bundle
sicher? Oder soll ich einfach den Wert zerstören, wenn das Fragment zerstört wird? Stellt der folgende Code ein Sicherheitsrisiko für meine Benutzer dar?
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", "");
...
}
}
Ich würde für einen savedInstanceState gehen. Es wird nur im Speicher gespeichert und das Gleiche gilt für ein Passwortfeld. – rastik
Fragmente haben einen 'SaveFragmentInstanceState' ... so weit sicher? es ist ** as ** sicher (oder unsicher) wie ein beliebiges Objekt im Speicher, einschließlich des 'EditText', der das partielle/vollständige Passwort ist. Serialisieren Sie den Inhalt des Pakets nicht auf der Festplatte oder platzieren Sie sichere Informationen mit einem 'PersistableBundle' .... – SushiHangover
@SushiHangover Okay, perfekt! Fügen Sie das als Antwort hinzu und ich gebe Ihnen das Häkchen! – flakes