如何安全地存储在“应用程序首选项”中输入

时间:2011-09-21 12:39:14

标签: iphone ios security

我的iPhone应用程序使用用户名和密码连接到Web服务。

我更喜欢将凭据保存在“应用程序首选项”(设置包)中,例如“邮件应用程序”。这足够安全吗?是否可以将这些值保存到钥匙串(通过应用程序首选项)?

编辑:

我希望我的用户在我的应用程序的应用程序首选项中输入他们的凭据。通常,我可以使用NSUserDefaults在我的应用程序中检索此数据。但是“应用程序首选项”将数据保存为纯文本,并且既不加密也不加密。有安全的方法吗?例如。我知道iPhone上的钥匙链,我发现它很棒! 我可以使用钥匙串保存在“应用程序首选项”中输入的凭据吗?

深思熟虑:Apple如何做到这一点?我的意思是,当我想使用Mail App时,我在应用程序首选项中提供了我的用户名和密码。这些值是否以明文形式存储?

6 个答案:

答案 0 :(得分:5)

您是否检查过keychain documentation?有关安全问题,请参阅Fraunhofer SIT研究所的white paper

答案 1 :(得分:2)

安全存储需要

Keychain Services。使用NSUserDefaults无法保护您的数据。

答案 2 :(得分:2)

您可以使用Security.framework安全地保存它。

来自Apple的非常好的示例,其中讨论了使用该框架的许多方面。我建议你仔细研究一下。以下是该示例的链接:GenericKeychain

  

此示例显示如何添加,查询,删除和更新泛型类类型的钥匙串项。还演示了共享钥匙串项的使用。所有类都表现出非常相似的行为,因此所包含的示例将扩展到其他类的Keychain Item:Internet Password,Certificate,Key和Identity。

答案 3 :(得分:2)

似乎很多人似乎不理解你的问题。不幸的是我自己找不到答案。问题是你如何同时使用钥匙串和NSUserDefaults。 我也想使用NSUserDefaults接口。 希望我们能想出来......

一种选择是仅存储用户名。然后当应用程序启动时,如果钥匙串中没有密码或钥匙串中有错误的密码 - 请求新密码。

答案 4 :(得分:0)

在用户使用“设置”将其输入应用的“应用程序首选项”后,您可以在应用运行时从NSUserDefaults中删除项目。然后将它们放入钥匙串中。但是这些项目可能是临时存储中的纯文本(取决于哪种iPhone型号,有些可能会加密闪存存储和备份),然后才能从NSUserDefaults中删除它们。

答案 5 :(得分:0)

Apple拥有整个操作系统,当然还有Mail应用程序。他们使用公共SDK之外的功能,因为他们可以。您如何看待Mail应用程序可以在后台运行并继续检查您的邮件?普通的应用程序无法做到这一点:(

回到主要问题,使用钥匙串是正确的方法。但是你可能不得不禁止用户输入用户名和用户名。 Application Preferences中的密码。没有办法确保这一点。