如何保护ApplicationSupport文件夹中的数据免受iOS中的未授权访问?

时间:2015-08-17 18:45:22

标签: ios iphone swift ipad

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

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

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

很抱歉,如果这个问题很愚蠢,因为我是iOS App Development的新手!任何有关这方面的帮助将不胜感激....

P.S。我尝试过Data Protection API,它仅在您的设备通过密码锁定时才有效...如果您使用密码解锁设备,您仍然可以访问数据。

2 个答案:

答案 0 :(得分:1)

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

准备:

  1. 创建随机密钥
  2. 将该密钥保存在Keychain中
  3. 加密:

    1. 从Keychain获取该密钥
    2. 使用密钥
    3. 使用AES加密文件
    4. 将文件保存到所需目录。
    5. 解密:

      1. 从Keychain获取该密钥
      2. 将文件读入内存。
      3. 使用密钥
      4. 解密文件

        使用Common Crypto进行加密功能。

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

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

答案 1 :(得分:1)

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

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

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