【问题标题】:How to protect data in ApplicationSupport folder from unauthorized access in iOS?如何在 iOS 中保护 ApplicationSupport 文件夹中的数据免受未经授权的访问?
【发布时间】:2015-11-10 12:16:46
【问题描述】:

我正在开发一个应用程序,该应用程序将从服务器下载 JSON,将它们存储在 /Library/Application Support/ 文件夹中,然后使用它们......

但在我的 iPad 上运行该应用程序后,我可以使用名为 iExplorer 的 Mac OSX 应用程序查看 Application Support 文件夹中包括 JSON 在内的所有文件(但 Documents 文件夹也可见)...

有什么方法可以防止未经授权的人访问应用程序支持文件夹? (因为现在任何在他们的设备上运行该应用程序的人都可以访问敏感信息,包括 JSON)......有人可以帮助我吗?

对不起,如果这个问题很愚蠢,因为我是 iOS 应用开发的新手!任何有关这方面的帮助将不胜感激....

附注我尝试了数据保护 API,它仅在您的设备通过密码锁定时才有效...如果您使用密码解锁设备,您仍然可以访问数据..

【问题讨论】:

    标签: ios iphone swift ipad


    【解决方案1】:

    加密数据,使其无法被攻击者使用。

    准备:

    1. 创建随机密钥
    2. 将该密钥保存在钥匙串中

    加密:

    1. 从钥匙串中获取该钥匙
    2. 使用密钥使用 AES 加密文件
    3. 将文件保存到所需目录。

    解密:

    1. 从钥匙串中获取该钥匙
    2. 将文件读入内存。
    3. 使用密钥通过 AES 解密文件

    对加密功能使用 Common Crypto。

    开始使用,用于 AES 的 256 位随机密钥:

    func generate256BitKey() -> [UInt8] {
        let keyLength = Int(kCCKeySizeAES256)
        var key = [UInt8](count: keyLength, repeatedValue: 0)
        SecRandomCopyBytes(kSecRandomDefault, keyLength, &key);
        return key
    }
    

    【讨论】:

    • 听起来不错,但似乎太复杂了:/无论如何,会试一试。谢谢:)
    • 正如 Rob 所说,根据您正在寻找的安全级别,保护用户是一个难题,甚至是不可能的。 OTOH 使用加密文件代替纯文本文件是一大步。使用随机生成的密钥比普通密码要好得多。将钥匙放在钥匙串中比在代码中硬编码钥匙更好。是不是万无一失:没有。它是否使它变得更难并提高标准是的。它可能会阻止随便的人。它是否可以保护它免受老练的攻击者的攻击?
    【解决方案2】:

    我假设“未经授权的用户”是指“设备的所有者”。对于您发送或存储在其设备上的数据,设备所有者不能被视为未经授权的用户。 Zaph 的回答提供了一些混淆,但不保护设备所有者的信息。就像数据保护一样,任何可以读取钥匙串的人都可以逆转这种类型的加密。这些技术是为了保护用户免受攻击,而不是保护您免受用户攻击。

    没有有效的技术可以保护您免受您自己的用户的伤害。有各种混淆技术(例如使用存储在设备上的密钥进行加密),但它们都是可以规避的。有很多帖子深入讨论了这个问题。 Secure https encryption for iPhone app to webpagehttp://robnapier.net/obfuscating-cocoa 是一个很好的起点,可以链接到更多内容。

    对于大多数问题,稍微混淆一下可能就可以了。它不会阻止专门的攻击者,但你也不会做任何事情,所以简单的事情就可以了。只是不要相信它会保护你免受你自己的用户的伤害。这是一个非常困难的问题(有关更多信息,请参阅链接)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-11
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 2019-06-05
      • 2017-05-11
      • 1970-01-01
      相关资源
      最近更新 更多