2011-09-21 78 views
6

我的iPhone應用程序使用用戶名和密碼連接到Web服務。如何安全地存儲在應用程序首選項中輸入的憑證?

我更喜歡將憑據保存在應用程序首選項(設置包)中,如郵件應用程序。這足夠安全嗎?是否可以將這些值保存到鑰匙串(通過應用程序首選項)?

編輯:

我希望我的用戶在我的應用程序的應用程序首選項輸入憑據。通常,我可以使用NSUserDefaults在我的應用程序中檢索這些數據。但應用程序首選項將數據保存爲純文本,並且它既沒有加密也沒有散列。有沒有安全的方法?例如。我知道iPhone上的鑰匙串,我覺得它很棒! 我可以使用鑰匙串來保存在應用程序首選項中輸入的憑證嗎?

思考:蘋果如何做到這一點?我的意思是,當我想使用郵件應用程序時,我在應用程序首選項中提供了我的用戶名和密碼。這些值是否以明文形式存儲?

+0

類似於這個問題在堆棧溢出 http://stackoverflow.com/questions/190963/can-i-access-the-keychain-on-the-iphone – iamsult

+0

不是真的我知道鑰匙串。我只想知道它是否適合我的最佳解決方案 – Sandro

+0

是的,你可以使用它 – iamsult

回答

5

您是否檢查了keychain documentation?關於安全性,請參見Fraunhofer SIT研究所的white paper

+0

Arne是正確的,目前設備上沒有地方可以安全地存儲用戶名和密碼。使用r輸入用於驗證應用程序的用戶名和密碼。 –

+0

我結束了在我的應用程序中實現登錄模式視圖以將憑證存儲到鑰匙串。所以這個答案是可以的。不過,我不知道如何安全地將數據從應用程序偏好設置保存到鑰匙扣 – Sandro

2

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

這是從蘋果非常好的示例,討論了使用該框架的許多方面。我建議你看看它。以下是該示例的鏈接:GenericKeychain

此示例顯示如何添加,查詢,移除和更新泛型類型的鑰匙串項目。還演示了共享鑰匙串項目的使用。所有類都表現出非常相似的行爲,因此包含的示例將擴展到Keychain Item的其他類:Internet密碼,證書,密鑰和標識。

0

當用戶使用「設置」將應用程序輸入到應用程序的「應用程序首選項」中後,您可以在應用程序運行時從NSUserDefaults中刪除項目。然後將它們放入鑰匙串中。但是這些項目在臨時存儲過程中可能是純文本格式(取決於哪個iPhone型號,有些可能會加密閃存存儲和備份),然後才能將它們從NSUserDefaults中刪除。

+0

我有同樣的想法。但是就像你說的那樣:它以臨時文本的形式保存敏感數據。 – Sandro

2

看來,很多人似乎並不瞭解你的問題。不幸的是我自己找不到答案。問題是如何在同一時間使用鑰匙鏈和NSUserDefaults。 我也想使用NSUserDefaults接口。 希望我們可以弄清楚這一點......

一個選項是隻存儲用戶名。然後,如果在鑰匙串中沒有密碼或鑰匙串中存在錯誤密碼的情況下啓動應用程序 - 請求新密碼。

0

蘋果擁有整個操作系統,當然還有郵件應用程序。他們正在使用公共SDK之外的功能,因爲他們可以。您如何看待郵件應用程序可以在後臺運行並繼續檢查郵件?正常的應用程序不能實現這一點:(

回到你的主要問題,使用鑰匙串是正確的路要走,但你可能不得不禁止用戶在應用程序首選項中輸入用戶名密碼&沒有辦法保護那

相關問題