2010-03-05 112 views
3

我的許多用戶都要求爲我的數據庫中的各種數據元素提供密碼保護。不幸的是,我現有的一個功能是將數據庫備份到公共位置(SD卡)以獲得數據冗餘,所以我的數據庫不安全。如何在Android應用程序中保護密碼

所以我的問題是雙重的。

  1. 如何在android上加密或保護數據庫?

  2. 如何以安全,無法訪問的方式將用戶創建的密碼存儲在設備上。

+0

這確實屬於兩個單獨的問題 – Casebash 2010-04-20 01:06:29

+0

您不應該將密碼存儲爲純文本。存儲(密碼+鹽)的SHA256。 – pmilosev 2013-01-31 09:42:12

回答

0

如果你通過偏好存儲存儲數據,這個數據只有你的應用程序可以訪問,如果android系統是有效的(沒有根等)。每個應用程序將獲得一個自己的用戶訪問文件系統,因此底層的Linux系統將阻止其他應用程序讀取這些數據存儲。

我還沒有與偏好管理器一起工作,也許你會找到如何在文檔中使用它的答案。

如果您需要密碼登錄到外部網絡應用程序,並且不能簡單地存儲密碼的散列,那麼就會有一個特殊機制用於Google身份驗證。您使用用戶名密碼登錄Web應用程序,然後Web應用程序會將安全令牌發送到您的設備。該令牌可以保存,並且對於從該設備登錄兩週是有效的。 如果您控制正在使用的網絡應用程序的某些部分,這隻能工作。

+0

首選項存儲是一個簡單的鍵/值字典,不是數據庫的合適後備。此外,由SQLLiteOpenHelper創建的數據庫文件也會受益於您所描述的相同保護。 – Segfault 2010-03-05 16:51:50

+0

如果將密碼存儲在偏好存儲區中,則它們不存儲在數據庫中,並且數據庫可以寫入SD卡而不會出現安全問題 – Janusz 2010-03-05 17:45:04

+0

即使密碼不在那裏,我仍然需要保護數據庫。數據庫中的一些數據將被這些密碼特別設置密碼保護,因此即使將它們存儲在其他地方,仍然需要保護它們所保護的數據。 – CodeFusionMobile 2010-03-06 14:50:08

1

如果您使用API​​版本5或更高版本,則可以與android.accounts.AccountManager集成。

+1

我在API 3上。我可以升級,但會失去太多用戶而不是每個人都會使用的功能。 – CodeFusionMobile 2010-03-07 21:24:31