내 애플리케이션에는 사용자가 비밀번호를 입력하는 부분이 있습니다. 이 단편은 회전 할 수 있습니다. 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'를 포함하여 ** as ** ** 메모리에있는 어떤 객체와 마찬가지로 안전하거나 안전하지 않습니다. 번들 내용을 디스크에 직렬화하거나'PersistableBundle'을 사용하여 보안 정보를 저장하지 마십시오 .... – SushiHangover
@SushiHangover 괜찮습니다. 그것을 답으로 추가하면 체크 표시가 나타납니다! – flakes