2014-05-09 4 views
1

내 iPhone 앱에 로컬로 데이터를 저장하고 싶습니다. 이 경우 데이터는 게임에서 높은 점수가됩니다. 앱의 속성 목록에 높은 점수를 저장하고 싶지만 우려가 있습니다. jailbroken 장치가 속성 목록을 해킹하고 높은 점수를 변경할 수 있습니까? 나는 사람들이 높은 점수를 변경하고 그 점수를 Game Center에 동기화하는 것을 원하지 않습니다. 미리 감사드립니다!iOS에 안전하게 데이터 저장

+0

궁극적으로 사용자가 앱을 열 때 비밀번호를 입력해야만 휴대 전화에 데이터를 저장할 수 있습니다. 물론 암호를 알고 있으면 다른 사람이 할 수없는 경우에도 데이터를 얻을 수 있습니다. –

답변

1

예, 탈옥은 파일 시스템에 대한 액세스를 제공하므로 사용자는 쉽게 모든 것을 변경할 수 있습니다. 이 문제를 해결하는 한 가지 방법은 AES 같은 것을 사용하여 점수를 암호화하거나 데이터를 체크섬으로 보호하는 것입니다.

Matthias Plappert하여 데이터를 Secure-NSUserDefaults, NSUserDefaults 내부에 데이터를 저장하는 라이브러리를 편집하는 사용자를 금지 (내가 거기에 높은 점수를 저장하기 위해 확인을해야 가정) 안전한 방법으로 저장하는 좋은 도구가 있습니다.

데이터를 암호화하지 않지만 최고 점수이면 충분합니다. 예를 들어

(약간의 편집과 프로젝트 README에서이 질문에 맞게) :
// Configuring user defaults. It is recommended that you do this 
// immediately after the app did launch. 
[NSUserDefaults setSecret:@"My Game Secret Key"]; 

// Write secure user defaults 
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setSecureInteger:4000 forKey:@"HighScore"]; 

// Read secure user defaults 
BOOL valid = NO; 
BOOL registered = [defaults secureBoolForKey:@"HighScore" valid:&valid]; 
if (!valid) { 
    // the property has been modified, handle this situation 
} else { 
    // Valid property, do whatever you need to do 
} 

그냥 말. 프로젝트 페이지에서 더 많은 것을 찾을 수 있습니다.

관련 문제