簡體   English   中英

如何安全地在Android數據庫中存儲數據

[英]How to securely store data in android database

我正在創建一個Android應用程序,其中將在首次使用時進行電話號碼驗證(與Whatsapp中發生的情況相同)。 當電話號碼成功通過驗證后,我想以一種用戶無法更改/更改的方式存儲該號碼。 默認情況下,Android(SQLlite)中的數據以文本格式存儲在存儲中,用戶可以對其進行編輯。 我想消除這個缺點。 我應該使用SQLCipher進行存儲嗎? 還是還有其他存儲方式? 還是沒有人知道Whatsapp使用哪種技術來存儲此類敏感信息?

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

大多數用戶將永遠不會嘗試(甚至不會意識到)這樣的舉動。

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

但是,您應該為試圖訪問/修改您用戶的私人數據的黑客做好准備,而我知道保護您的數據庫免受此類黑客攻擊的最佳工具是SqlCipher

對於非數據庫機密數據存儲,請確保在對加密機制進行手動編碼之前先閱讀此內容

Android安全提示文章逐字引用:

默認情況下,您在內部存儲上創建的文件只能由您的應用訪問。 此保護由Android實現,對於大多數應用程序來說足夠了。

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

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

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

最后,您可能會對這個SO問題(Android安全存儲)感興趣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM