2012-02-07 53 views
0

现在我有一个用户名存储在NSUserDefaults和钥匙串中的密码。尽管我知道NSUserDefaults中的所有内容都以纯文本形式存储,但最终用户是否也可以更改此存储值?用户名在整个应用程序中用于从服务器检索数据。我的担心是,如果最终用户能够改变这个价值,他们将能够成为其他用户。ios NSUserDefaults存储用户名。用户可以编辑这个吗?

那么NSUserDefaults是可读可写的还是只能由最终用户读取?

+1

他们也需要一个匹配的密码,不是吗? – 2012-02-07 21:14:00

回答

4

这取决于。您的平均最终用户将无法使用,但拥有Jailbroken iDevice的普通用户可以。

NSUserDefauls是存储在~/Applications/{APPLICATION_UUID}/Library/Preferences/com.mydomain.myapp.plist在一个纯XML格式的plist,使它很容易为最终用户编辑,如果他们是摆在首位严重jailbreaker,他们可能有他们的iPhone上的plist编辑器(iFile,iFinder等)

在我看来,敏感数据应该以加密的二进制格式通过fread()/fwrite()存储。

+0

如果我将用户名存储在钥匙串中,我也不必担心它会被更改吗? – user1108720 2012-02-07 21:31:41

+0

@ user1108720我不知道,我从来没有在iOS上使用过钥匙串,但是如果MacOS对它的工作原理有任何想法,那么是的,它可能非常容易编辑。 – 2012-02-07 21:32:35

0

简短答案是否定的,用户不能更改保存在NSUserDefaults中的值。

中等答案,如果设备插入并且您有Xcode的工作副本,值将被保存到纯文本中可见的plist文件。或者通过越狱的其他方式,但它通常不是一个问题。

关于使用iOS钥匙串接受的答案中的评论,用户不能更改。您可以找到许多示例,向您展示如何使用Apple提供的KeychainWrapper文件来存储用户名和/或密码。我最近将我的应用程序从用户名和密码生成的腌制/散列标记转换为直接存储在钥匙串中。我认为这是存储用户凭证的最安全,最安全的方式。无论如何,在我看来。

相关问题