用户退出应用程序时,在设备上安全保存私人数据

时间:2011-08-02 17:49:59

标签: iphone objective-c

我想保存像用户ID和传递单词等内容(属性), 直到现在我用plist这样做,但我明白plist可以从itunes和这样的东西访问,所以还有其他什么来保存这样的东西?

5 个答案:

答案 0 :(得分:4)

您应该使用Keychain Services

答案 1 :(得分:3)

如果要存储用户名/密码值,最好将它们存储在Keychain中。有关如何执行此操作的示例,请参阅此blog entry

答案 2 :(得分:3)

当应用程序退出时,没有一种简单的方法可以专门加密数据。如果您需要始终在磁盘上加密的所有内容,钥匙串服务是唯一的方法。

但是,iOS也支持数据保护。如果用户在设备上设置了密码,则设备可以自动加密应用程序的文件。这称为“文件保护”,有多种选择。例如,NSDataWritingFileProtectionComplete选项会导致文件被完全加密,除非设备已解锁。如果有人不知道设备的密码,他们就根本无法访问这些文件。

要使用此API,请使用要编写的文件的内容创建NSData。然后传递文件保护选项,如下所示:

NSData *theData;
NSError *error;
[theData writeToURL:someURL
            options:NSDataWritingFileProtectionComplete
              error:&error];

如果您只是保存用户名/密码信息,则应将密码存储在Keychain中。用户名将是您检索密码的密钥,因此您需要将其存储在其他位置。您可以使用上面详述的文件保护为用户名添加一定程度的保护,但它不像钥匙串那样安全。

答案 3 :(得分:0)

核心数据可能是一个很好的解决方案,我认为任何人都无法轻易访问核心数据。

答案 4 :(得分:0)

以下是在App Delegate中使用applicationWillTerminate的教程。但它不使用KeyChain服务,您需要添加它。它改为使用plist。

http://servin.com/iphone/iPhone-Save-and-Restore-Mini-Course.html