如何处理屏幕上的密码输入

时间:2016-11-20 22:25:22

标签: android android-fragments xamarin passwords bundle

在我的应用程序中,我有一个用户输入密码的片段。这个片段能够旋转。在旋转时,我希望使用onSaveInstanceStateonActivityCreated保存和恢复大部分文本字段。通常,当我将密码保存到磁盘时,我使用单向散列来限制在此信息受到损害时可以执行的损坏量。但是,如果密码只写了一半,那么我就不能单向哈希......它需要可以恢复。

所以我的问题是:在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", "");
        ...
    }
}

1 个答案:

答案 0 :(得分:1)

FragmentsSaveFragmentInstanceState方法。

  

保存给定Fragment的当前实例状态。稍后可以在创建Fragment的新实例并将其添加到片段管理器时使用它,以使其创建自身以匹配此处返回的当前状态。

参考:Xamarin:SaveFragmentInstanceState 参考:Android:saveFragmentInstanceState

<强>安全吗

与内存中的任何对象一样安全,或不安全,包括其中包含部分/完整密码的EditText。不要将捆绑内容序列化到磁盘或使用PersistableBundle放置安全信息作为保存...