Xcode:在最终的iOS应用程序中隐藏/保护资源文件?

时间:2012-06-14 21:55:29

标签: iphone ios objective-c xcode encryption

我计划开发适用于iOS的应用,并希望使用HTML5,CSS和Javascript。最终的应用程序应该使用Xcode和UIWebView实现为本机应用程序。

我可以在最终应用中隐藏或保护我的html文件吗?我必须将文件放在Xcode中名为“Supporting Files”的文件夹中。因此,每个人都可以通过提取.ipa文件来购买应用程序后查看纯文件,对吗?

3 个答案:

答案 0 :(得分:9)

有多种方法可以保护您的数据,具体取决于您希望保护的好坏程度。对于仅针对偶然黑客的极少保护,您可以使用字符串模糊处理算法来混淆和去混淆HTML内容NSString。这是一个example of doing that。我没有使用那个特定的代码,但我也不是真的建议混淆作为一种技术,除非数据真的不是很敏感。

更好的解决方案是加密 HTML内容,尽管这样做更多,并且可能涉及一些export control issues,具体取决于您的位置以及您分发应用的位置。

对于加密,您有很多选择。

1) Here is an open source implementation that provides a secure version of something like NSUserDefaults。但是,我在该代码中看不到相当于registerDefaults:的内容,因此您的应用运行的第一次时间可能会发生,您可能需要从网上下载内容。但是,您可以加密并将其作为字符串值存储在PDKeychainBindings中。在后续运行中,您可以提取存储的HTML “files”,如下所示:

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

2)这是另一个open source project that provides AES encryption wrappers。在发布应用程序之前,您可以编写一些非生产代码,以将HTML内容加密为可作为捆绑资源的加密数据文件。当您的应用运行时,它会打开文件并将其解密为NSString个对象,这些对象可以通过UIWebView提供给loadHTMLString: baseURL:

3)最后,here's another example of using the underlying CommonCrypto APIs to protect bundle resources。此示例使用自定义生成步骤自动加密特定文件夹中的资源,如果受保护的HTML内容经常发生变化,这将节省您一些时间。

答案 1 :(得分:1)

您可以在运行时加密文件并对其进行解密,或者不能将它们包含在捆绑包中,并且有一个编译时脚本可以读取它们并将它们转换为应用程序中的编码数据,您可以将其加载到UIWebView中:

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

答案 2 :(得分:-4)

您可以在代码中创建所有HTML等,然后使用UIWebView

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

手动将每个HTML字符串加载为纯文本。不过,我建议你不要这样做。如果有人真的想要从编译的源代码中隔离每个字符串,那么对他来说这是可能的(除非你真的要求很高的东西)。

大多数用户根本不关心ipa文件中的内容。如果你可以和< 1%的人对此进行检查,不要过于担心这个话题。

另一个方面也是可能的(即使这不是一个奇妙的想法):你可以将你的UIWebView指向一个秘密网站,只有你和你的应用知道。这绝对不可取