2012-06-14 3 views
5

iOS 용 앱을 개발하고 HTML5, CSS 및 Javascript를 사용하고 싶습니다. 최종 앱은 Xcode 및 UIWebView을 사용하여 기본 앱으로 구현되어야합니다.Xcode : 최종 iOS 앱에서 리소스 파일을 숨기거나 보호 하시겠습니까?

최종 앱에서 HTML 파일을 숨기거나 보호 할 수 있습니까? Xcode에서 "Supporting Files" 폴더에 파일을 넣어야합니다. 따라서 누구나 .ipa 파일을 추출하여 앱을 구입 한 후 일반 파일을 볼 수 있습니다.

답변

-4

당신은 모든 HTML을 생성하고 등등 또한 당신의 코드 내에서 다음 UIWebView의이

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL 

수동으로 일반 텍스트로 모든 HTML 문자열을로드하는 데 사용할 수 있습니다. 그러나 나는 그렇게하지 말라고 조언합니다. 만약 누군가가 컴파일 된 소스 코드에서 모든 문자열을 분리하려고한다면, 당신이 정말로 요구하지 않는 한 그 사람도 가능합니다.

대부분의 사용자는 ipa 파일의 내용을 신경 쓰지 않습니다. < 1 %의 사람이 검사 할 수 있다면이 주제에 대해 너무 걱정하지 마십시오.

또 다른 측면이 가능할 수도 있습니다 (환상적인 아이디어는 아니지만). UIWebView가 귀하와 귀하의 앱에서만 알고있는 비밀 웹 사이트를 가리킬 수 있습니다. 이것은 입니다.은 절대 권장하지 않습니다.

1

파일을 암호화하여 런타임에 해독하거나 번들에 파일을 포함시킬 수 없으며이를 읽을 수있는 컴파일 타임 스크립트가있어 앱의 인코딩 된 데이터로 변환하여 UIWebView에로드 할 수 있습니다. :

- (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)baseURL 
+0

첫 번째 문장에서 "암호화"와 "해독"을 의미한다고 가정합니다. – abarnert

+0

그래, 그거야. 업데이트 됨. – pho0

9

보호 기능을 원하는대로 데이터를 보호 할 수있는 방법은 다양합니다. 캐주얼 해커에 대한 최소한의 보호를 위해 문자열 난독 화 알고리즘을 사용하여 HTML 컨텐트를 난독 화하고 난독 화 처리를 수행하여 NSString으로 지정할 수 있습니다. example of doing that입니다. 나는이 특정 코드를 사용하지 않았지만 데이터가 실제로 매우 민감하지 않은 한, 기술로 난독 화을 권장하지는 않습니다. 앱을 배포하는 곳이 더 많은 작업, 그리고 당신이 위치에 따라 약간의 export control issues을 포함 할 수 있으며, 비록

더 나은 솔루션은 암호화 HTML 콘텐츠이다.

암호화에는 많은 옵션이 있습니다.

1)Here is an open source implementation that provides a secure version of something like NSUserDefaults. 그 코드에서 registerDefaults:과 같은 것을 볼 수는 없지만 첫 번째 앱이 번 실행될 가능성이 있으므로 웹에서 콘텐츠를 다운로드해야 할 수 있습니다. 그러나 암호화하여 PDKeychainBindings에 문자열 값으로 저장할 수 있습니다.

NSString* webPageContent = 
    [[PDKeychainBindings sharedKeychainBindings] valueForKey: @"index.html"]; 

2)가 여기에 또 다른 open source project that provides AES encryption wrappers의 : 후속 실행에, 당신은 다음 HTML을 "파일"이 같은 저장들을 추출 할 수있다.번들 리소스가 될 암호화 된 데이터 파일로 HTML 컨텐트를 암호화하기 위해 앱을 릴리스하기 전에 비 프로덕션 코드를 작성합니다. 앱을 실행하면 파일이 열리고 NSString 개체로 암호 해독되며 UIWebViewloadHTMLString: baseURL:을 통해 전송할 수 있습니다.

3) 마지막으로, here's another example of using the underlying CommonCrypto APIs to protect bundle resources. 이 예제에서는 사용자 지정 빌드 단계를 사용하여 특정 폴더의 리소스를 자동으로 암호화하므로 보호 된 HTML 콘텐츠가 합리적으로 자주 변경되는 경우 시간을 절약 할 수 있습니다.

관련 문제