2009-09-23 73 views
4

你知道在Android中保護數據庫的方法嗎?Android。如何保護你的數據庫?

我想實現以下,但不知道是否有可能:

  1. 限制訪問數據庫只應用程序所有者(這創造和提供它)。
  2. 在數據庫所有者應用程序的使用會話期間,限制或拒絕所有其他應用程序對數據庫的訪問。
  3. 有沒有什麼方法來保護你的數據庫的密碼?

使用sqlite3進行的測試表明,您可以在另一個應用程序使用它時更改數據庫。所以,我認爲可能有些外部應用程序可能會損壞您的數據或使用它,這是不好的。

而且,你打算如何處理這些併發數據庫使用過程中可能發生的數據庫異常:

  1. 展現給用戶的消息,並密切
  2. 展現給用戶的消息,並繼續工作
  3. 剛關?

在這一切發生之後,您如何計劃下次啓動應用程序?

謝謝

回答

6

android系統自動實現並執行您的列表中的選項(1)。電話/系統上的每個應用程序都有自己的用戶ID,並且任何應用程序都不能訪問任何其他應用程序的數據庫文件。

如果你想分享你的數據(訪問控制),您可以創建一個內容提供商,然後可以通過其他應用程序使用:http://developer.android.com/intl/de/reference/android/content/ContentProvider.html

有幾個例外,上述規則的:

  1. 在SDK中的模擬器中,adb shell爲您提供了對模擬電話文件系統的完全訪問權限。在現場android手機中情況並非如此。
  2. 在已經「紮根」的手機中,任何獲得root權限的應用程序都可以訪問任何其他應用程序(以及其他任何應用程序)的db文件 - 這是生根手機的成本/風險,設備所有者的責任。

基本上,你不需要擔心它。 Android通常會爲您預防這些問題。

+0

查看下面的答案(user632079)。不用擔心! – kellogs 2012-08-15 19:11:45

+0

@kellogs:我將這個問題解釋爲「你如何從其他應用程序中保護你的android應用程序數據庫中的用戶數據」(並且正確答案是「你不需要,android系統會照顧它」); user632079似乎把它看作是「你如何保護你的應用程序的私人代碼和來自用戶的非用戶數據」 - 這是一個根本不同的問題,是的,加密是這類問題的一種選擇。 – Tao 2012-08-16 06:29:49

5

你實際上應該很擔心。 很容易獲得您的數據庫,甚至沒有根植手機的代碼。 這裏是一個如何去做的例子:

  1. 下載ASTRO文件管理器。
  2. 使用該選項將您的應用程序備份到SD卡中。
  3. 將備份的文件傳輸到您的計算機中。
  4. 使用Apk_OneClick工具(在因特網上搜索)來反編譯應用程序包。

現在你擁有了一切,代碼,數據庫,圖像,XML文件,一切!

所以我可以告訴你,你可以在幾分鐘內讓別人的代碼和數據庫。 爲了保護您的應用程序,請使用ProGuard,併爲您的數據庫使用某種類型的加密。就我個人而言,我會對每個字段數據進行加密,並在運行時對其進行解密,並使用簡單的加密技術進行XOR處理,但這並不會影響性能。

+0

我想說,開發者不負責將敏感數據存儲在手機上。不要以爲你應該手動加密手機上保存的所有內容。 – Draiken 2011-10-13 16:57:19