2016-11-20 3 views
2

내 애플리케이션에는 사용자가 비밀번호를 입력하는 부분이 있습니다. 이 단편은 회전 할 수 있습니다. rotate에서 나는 대부분의 텍스트 필드가 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", ""); 
     ... 
    } 
} 
+0

savedInstanceState를 사용합니다. 메모리에만 저장되며 암호 필드에도 동일하게 적용됩니다. – rastik

+1

조각에는 안전한 SaveFragmentInstanceState가 있습니다 ...? 부분적/전체 암호 인'EditText'를 포함하여 ** as ** ** 메모리에있는 어떤 객체와 마찬가지로 안전하거나 안전하지 않습니다. 번들 내용을 디스크에 직렬화하거나'PersistableBundle'을 사용하여 보안 정보를 저장하지 마십시오 .... – SushiHangover

+0

@SushiHangover 괜찮습니다. 그것을 답으로 추가하면 체크 표시가 나타납니다! – flakes

답변

1

FragmentsSaveFragmentInstanceState입니다.

지정된 단편의 현재 인스턴스 상태를 저장하십시오. 나중에 조각의 새 인스턴스를 만들고 조각 관리자에 추가하여 여기에 반환 된 현재 상태와 일치하도록 자체를 만들 때 사용할 수 있습니다.

참조 : 자 마린 : SaveFragmentInstanceState 참조 : 안드로이드 : saveFragmentInstanceState

안전?

그것은 그 안에 부분/전체 패스워드를 가지고 EditText 포함한 메모리의 개체로서, 또는 불안과 같은 안전하다. 번들 내용을 디스크에 직렬화하지 말거나 PersistableBundle으로 보안 정보를 저장하지 마십시오.

관련 문제