2013-02-12 102 views
1

我想知道。安全SQLite數據庫

我想讓我的數據庫私人。可能嗎。

如何在SQLite數據庫中使用context.MODE_PRIVATE

我想讓我的數據庫私人其他應用程序不應該訪問該數據庫。

+0

您的應用程序的文件被沙盒從其他人。您的數據庫的內容將不會被其他應用程序訪問,除非您這樣做。如果用戶擁有root用戶權限(在這種情況下所有投注都關閉,除非您的數據已加密),否則其他應用程序在未經您的許可/您指定的方式之外查看文件的唯一方法是。 – Karakuri 2013-02-12 15:41:13

+0

根據你的看法,sqlite中沒有什麼context.MODE_PRIVATE吧? – Unknown 2013-02-13 04:38:36

+0

不是我所知道的。 'Context.MODE_PRIVATE'用於創建文件,但數據庫的創建通常是通過實現'SQLiteOpenHelper'完成的。我還沒有看到任何指定任何文件創建模式的方法(但沒關係,無論如何,Context.MODE_PRIVATE是默認的)。無論如何,除非您有(a)導出的ContentProvider和(b)發佈了其他應用程序可用於查詢數據的URI,列名等,否則其他應用程序應該無法與數據庫交互。 – Karakuri 2013-02-14 05:53:59

回答

4

在您將數據輸入數據庫之前對其進行加密。據我所知,SQLite數據庫保存在/ data /目錄中的某個文件中。更重要的是,您的數據以純文本格式保存。這意味着有人可以通過將電話生根,獲取.db SQLite文件並用文本編輯器打開它來提取數據。

sqlite的作者提供了一個加密數據的版本。這不是免費的

https://guardianproject.info/code/sqlcipher/ SQLCipher是一種SQLite擴展,它提供透明的256位AES數據庫文件加密。

以前的sqlcipher是SQLite的開源完整數據庫加密不適用於android。但現在它可用作Android平臺的alpha版本。開發人員已經更新了標準android應用程序'Notepadbot'以使用SQLCipher。

0

爲了保護您的數據庫,您必須在應用程序的cache內存中創建數據庫。除了你提供了一個external storage path來保存你的數據庫,android默認會做這件事。