2010-08-19 13 views
2

base64 인코딩을 사용하고 NSUSerDefaults에 사용자 암호를 저장하는 응용 프로그램을 만들었지 만, 어쨌든 다른 iPhone 개발자가이 암호를 끊습니다. NSUserDefaults 데이터를 어떻게 얻을 수 있었는지 궁금합니다. 누군가가이 중요한 일을 멈추는 방법과 NSUserDefaults 데이터를 얻는 방법을 알고 있습니까? 또한 아이폰에 사용자 암호를 저장하는 가장 좋은 암호화 방법은 무엇입니까?NSUSerDefaults 데이터 가져 오기

답변

2

나는 SFHFKeychainUtils을 확인하시기 바랍니다. Keychain Services API을 감싸며 암호와 같은 중요한 정보를 저장할 수있는 매우 간단한 인터페이스를 제공합니다.

스토어 당신에게 비밀번호 :

NSError * error; 
[SFHFKeychainUtils storeUsername:userName andPassword:password forServiceName:@"whatever_service" updateExisting:YES error:&error]; 

다시 암호를 얻을 :

NSError * error; 
password= [[SFHFKeychainUtils getPasswordForUsername:userName andServiceName:@"whatever_service" error:&error] retain]; 

당신은 또한 사용자가 로그 아웃해야하는 경우 deleteItemForUsername 메시지를 사용하여 저장된 값을 지울 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 간단한 로그인보기가 있으며 사용자를 위해 암호를 다시 입력 할 필요가 없으므로 암호를 NSUserdefaults에 저장 한 것입니다. Sqlite3 데이터베이스를 사용해야합니까? –

+0

@ rahul-vyas 아니, 키 체인을 사용하는 것이 좋습니다. 몇 줄의 코드입니다 (일단 SFHFKeychainUtils.m을 추가하면 프로젝트에 응답합니다.) – RedBlueThing

+2

NSUserDefaults는 안전하지 않으며 base64 인코딩은 암호화되지 않습니다. 개발 동의서에 필요하다고 생각 하듯이 키 체인을 사용하여 계정 자격 증명을 저장하지 않으면 응용 프로그램이 상점에 허용됩니다. –

0

감옥에 걸린 사람이있는 것보다 더 잘 제어 할 수 있습니다. 비밀이 아니라 플래시 디스크가 아니라 메모리에 숨길 수있는 곳이 없습니다. 서버를 구축 할 때는 항상 공격자가 악성 클라이언트에 연결할 수 있다고 가정해야합니다. 이야기의 기간 끝.

+0

루크 jailbroken 장치없이 NSUserDefaults 데이터를 가져올 수 있습니까? –

2

키 체인 여러 응용 프로그램 및 보안 서비스를위한 암호를 보유하고 암호화 된 컨테이너 입니다. 키 체인은 보안 저장소 컨테이너입니다. 즉, 키 체인이 잠겨있을 때 아무도 보호 된 콘텐츠에 액세스 할 수 없습니다. - 키 체인 서비스 프로그래밍 가이드, Apple 2010.

Keychain Services Tasks for iOS을 읽는 것이 좋습니다.

0

실제 액세스 권한이있는 공격자는 암호화되지 않은 대부분의 데이터 파일 복사본을 포함하는 iPhone 백업을 만들 수 있습니다.