2012-02-07 93 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文件來存儲用戶名和/或密碼。我最近將我的應用程序從用戶名和密碼生成的醃製/散列標記轉換爲直接存儲在鑰匙串中。我認爲這是存儲用戶憑證的最安全,最安全的方式。無論如何,在我看來。

相關問題