2014-07-13 110 views
1

我正在創建一個Android應用程序,在該應用程序中首次使用電話號碼驗證(與Whatsapp中的情況相同)。當電話號碼得到驗證成功後,我希望以不能被用戶更改/更改的方式存儲號碼。默認情況下,Android(SQLlite)中的數據以文本格式存儲在存儲上,可以由用戶編輯。我想消除這個缺點。我應該使用SQLCipher來存儲它嗎?或者有沒有其他的方式來存儲它? 還是有誰知道Whatsapp使用哪種技術來存儲這種類型的敏感信息?如何在Android數據庫中安全地存儲數據

回答

0
> data in Android is stored .. on the storage, which can be edited by the user. 

大多數用戶永遠不會嘗試(甚至不知道)這樣的舉動。

您可能會遇到來自擁有固定設備或高級用戶(通常是開發人員)的用戶通過abd或DDMS的這種行爲,但坦率地說,在7年的Android開發過程中,我從未遇到過「天真」的用戶修改應用程序的數據庫。

你應該,但是,被黑客試圖訪問準備/修改你用戶的隱私數據和最好的工具 我知道以保護數據庫從這些黑客是SqlCipher

說到非數據庫祕密數據存儲,請務必在手動編碼加密機制之前閱讀this

+0

我得到了你的答案。但問題是我只想安全地存儲一個10位數的電話號碼。我不需要任何大型數據庫。我應該如何安全地存儲10位整數值? –

+0

訪問此鏈接,它有關於如何密碼祕密數據的詳細說明:http://android-developers.blogspot.co.il/2013/02/using-cryptography-to-store-credentials.html –

0

the Android Security Tips article逐字引用:

默認情況下,您在internal storage創建文件只能訪問到你的應用程序。這種保護由Android實施,對於大多數應用程序而言已足夠。

對於IPC文件,通常應避免使用MODE_WORLD_WRITEABLEMODE_WORLD_READABLE模式,因爲它們不提供限制對特定應用程序的數據訪問的能力,也不提供對數據格式的任何控制。如果您想與其他應用程序進程共享數據,則可以考慮使用content provider,該應用程序爲其他應用程序提供讀取和寫入權限,並可以根據具體情況制定動態權限授予。

要爲敏感數據提供額外的保護,您可以選擇使用應用程序無法直接訪問的密鑰來加密本地文件。例如,可以將密鑰放置在KeyStore中,並使用未存儲在設備上的用戶密碼進行保護。雖然這不能保護數據免受可能監視用戶輸入密碼的根本危害,但它可以爲沒有file system encryption的丟失設備提供保護。

另請注意,在external storage上創建的文件(如SD卡)是全局可讀寫的。由於外部存儲可以由用戶刪除,也可以由任何應用程序修改,因此您不應該使用外部存儲來存儲敏感信息。

最後,this SO question (Android Secure Storage)可能會讓你感興趣。

相關問題