2009-02-07 5 views
25

"유틸리티 응용 프로그램"템플릿을 기반으로하는 간단한 응용 프로그램이 있습니다. NSXMLParser를 통해 암호로 보호 된 XML 파일을 검색합니다.iPhone 응용 프로그램에 암호 저장

사용자가 "FlipsideView"에서 사용자 이름과 암호를 설정하도록 허용하려면 어떻게해야합니까?

나는 장소에 기초를 가지고 뷰로드합니다 ( viewWillAppear 방법을 사용하여), 그리고 NSLog'd 뷰가 닫힐 때 때 고정 된 값으로 설정됩니다 값있는 두 가지의 UITextField 상자는합니다 ( NSLog입니다 메서드에서 테스트하기위한 것임)

데이터를 어떻게 저장합니까? 개발자 설명서를 살펴본 결과 NSUserDefaults ..을 사용해야하는 것 같습니다.

답변

33

벤에 동의합니다. 이것은 정확히 키 체인을위한 것입니다.

나는 어떤 상황에서도 dbr이 제안하는대로 기본값에 암호를 저장합니다. 이것은 매우 불안합니다. 기본적으로 암호를 공개 상태로 저장하고 있습니다. iPhone Keychain Code

+0

완벽 하군, 고마워! 컴파일 할 때 오류를 일으킨 해당 페이지의 주석에 지적한 점 중 하나는 iPhoneOS Security.framework를 포함시켜 작동시켜야한다는 것입니다. – dbr

+0

이것은 비밀 번호를 저장하는 것에 대해 완벽하게 이해하지만, (비밀 번호를 검색하기 위해) 사용자 이름을 저장하는 것은 어떨까요? 앱 업데이트 등에서 덮어 쓰지 않는 무언가가 있다면, 그게 유일한 것인데 userdefaults에 저장하는 것이 무의미한 것처럼 보입니다. –

4

아하, NSUserDefaults가 작동하는 것 같다, 사용하기 간단 을하지만, 조금에 안전하지 않습니다 :

password이 UITextField에 대한 함께 IBOutlet입니다. 있으므로 사용자가 다른 사람에 대한 아주 쉬운 것입니다, 그래서

- (void)viewWillAppear:(BOOL)animated 
{ 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    NSString *pword = [prefs objectForKey:@"password"]; 
    password.text = uname; 
} 

- (void)viewWillDisappear:(BOOL)animated{ 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setObject:password.text forKey:@"password"]; 
} 

암호는 PLIST에 일반 텍스트로 저장됩니다 .. 그러나 이것은 중요하지 않은 설정을 저장하는 데 유용합니다.

사용자 이름을 필드로 저장하고 8 월의 답변에서 SFHFKeychainUtils keychain code을 사용하여 비밀번호를 저장했습니다.

+3

이 매우 안전하지 않습니다 :

애플의 샘플 코드뿐만 아니라, 또한 버즈 앤더슨의 키 체인 코드를 권장합니다. 기본적으로 비밀번호를 공개 상태로 저장하고 있습니다. – August

+0

예, 키 체인에 대해 완전히 잊었습니다. 얼마나 안전하지 않은지 반복적으로 대답했습니다. – dbr

9

정확히 애플이 키 체인을 개발 한 것입니다. 키 체인을 사용하면 암호를 암호화 된 형식으로 저장할 수 있습니다. Apple의 GenericKeychain 샘플을 살펴보십시오.

관련 문제