2010-04-20 163 views
13

我的Android應用程序使用密鑰來生成用於驗證目的的令牌。有沒有比將數據存儲在數據存儲中更安全的方法來存儲?我認爲對於iPhone而言,我們將它存儲在鑰匙串中。我知道android.accounts.AccountManager,但這似乎給其他應用程序潛在的訪問密碼的能力(如果用戶選擇錯誤的選項),所以似乎不太安全。在Android上存儲密鑰

回答

6

Android(不幸)不提供這樣做的方法。我之前使用的方法是使用應用程序中生成的另一個密鑰對此令牌進行加密。

您的應用程序密鑰可以通過算法生成。但是,這與您的算法一樣安全。一旦知道這就相當於以純文本存儲標記。

+0

我不認爲任何人會發現如果他們真的想要找到這個功能太難了。不過,我認爲這比讀純文本密鑰 – Casebash 2010-04-20 03:52:41

+0

的確是一個很大的努力。它比其他任何東西都更隱蔽。另一種方法是存儲使用某個用戶指定的密碼加密的令牌。這是最安全的,但是,每次啓動應用程序時,用戶都必須使用應用程序進行身份驗證。 – Prashast 2010-04-21 00:35:39

+0

它根本不安全。這相當於混淆。它可以保護您免受隨意瀏覽器和腳本小孩的侵害,但不會因爲想知道答案的真實性。但如果你只是擔心腳本小子,那麼這是一個好的解決方案。 – 2010-12-08 22:43:17

4

您可以將密鑰存儲在您的應用程序的首選項中。由於Android系統的基礎文件系統限制,這將保護密鑰不被其他應用程序讀取。

但是,這不會保護密鑰不被用戶自己讀取。

+7

是的,但是如果你這樣做,我可以在一分鐘內得到你的鑰匙!嘗試apktool,你可以得到整個strings.xml。只是做了一個着名的Android社交應用程序,並得到了他們的oauth消費者密鑰和祕密,Facebook的祕密,谷歌分析身份證,....給了我2分鐘。 – 2011-03-09 00:12:46

1

如果您可以運行apk工具,那麼它在調試中,並且您將根設備。當其越獄後,iOS中的鑰匙串沒有任何保護

+1

其用戶的錯誤,系統不安全 – Casebash 2011-08-10 21:13:08

0

您可以通過使用Android Keystore System生成的密鑰對祕密數據進行加密,然後存儲您喜歡的結果來存儲保密數據。