【问题标题】:iOS - resource content is accessible to publiciOS - 资源内容可供公众访问
【发布时间】:2014-12-28 14:31:39
【问题描述】:

在我的 iOS 应用程序中,我必须加载一个静态 html 文件,该文件在 Web 视图中包含一些敏感信息。所以我将该文件放在资源文件夹中。我正在使用此代码将其加载到网络视图中:

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"index" ofType:@"html" inDirectory:@"www"]];

[webview loadRequest:[NSURLRequest requestWithURL:url]];

这项工作,但是由于这个 html 包含敏感信息,我们可以在越狱设备上看到资源文件夹中的所有文件,这似乎是一个很大的安全问题。

  • 那么还有其他地方可以存储这个 html 文件吗?
  • 有什么方法可以禁用资源文件夹访问。

【问题讨论】:

    标签: ios iphone ipad cocoa-touch uiwebview


    【解决方案1】:

    不要使用loadRequest,因为它会将您限制为可显示为 URL 的数据(因此仅限于某些文件位置)。 UIWebView 也有其他方法:loadHTMLStringloadData。这些允许您加载任意数据,这意味着它可以声明为代码变量并编译到您的二进制文件中。如果这对于您的“敏感信息”仍然不够好,您可以在编译前使用对称密码加密数据,在加载前解密并在加载后立即删除。密码密钥显然需要成为二进制文件的一部分。您可以通过使实际密码成为某些预定义计算的临时结果来进一步混淆(例如,最简单的是,存储在不同位置的其他两个块的 XOR)。

    这一切都只是混淆。如果您的信息非常敏感,以至于有人对您的代码进行逆向工程和/或进行内存转储是值得的,那么他会这样做。您正试图以与臭名昭著的无能 DRM 相同的方式“保护”。

    【讨论】:

    • 可以通过服务器进行身份验证,然后服务器可以将密钥发送到加密的 html 文件,密钥将存储在 Keychain 中。
    • 如果发布者的命令中有一些服务器,那么文件本身可以被不对称加密发送,并且不需要任何黑客攻击。该技术存在,它被称为 SSL。发布者不想使用它的事实对我来说意味着他没有/不想要任何服务器。
    猜你喜欢
    • 2016-08-30
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2020-08-01
    • 1970-01-01
    • 2010-09-05
    相关资源
    最近更新 更多