android - 如何处理屏幕旋转上的密码输入

标签 android android-fragments xamarin passwords bundle

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

所以我的问题是:将密码放在 Bundle 中安全吗?或者如果 fragment 被销毁,我应该简单地销毁该值吗?以下代码是否对我的用户构成安全风险?

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", "");
        ...
    }
}

最佳答案

Fragments 有一个 SaveFragmentInstanceState 方法。

Save the current instance state of the given Fragment. This can be used later when creating a new instance of the Fragment and adding it to the fragment manager, to have it create itself to match the current state returned here.

引用:Xamarin:SaveFragmentInstanceState 引用:安卓:saveFragmentInstanceState

安全吗?

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

关于android - 如何处理屏幕旋转上的密码输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40710137/

相关文章:

java - 通过 Retrofit2 上传 Base64 编码图像返回空响应

android - 套接字上的 fragment 图像字节数组

android - DialogFragment 中的 VideoView

java - 在Android中使用Fragment时出现ClassCastException

java - Android 阻止 onPause 在父类中被调用

android - Xamarin Forms 跨平台 BBCode 支持

c# - 在 Xamarin.Android 中单击 RadioGroup 按钮时未选中 RadioButton

android - 尝试将 Android 组件放入库时出现 ClassNotFoundException

c# - 如何将 Razor 文件添加到 Xamarin 项目

java - 从不同 fragment 获取对象的更改