簡體   English   中英

用密碼保護SQLite DB

[英]Protect SQLite DB with password

我正在研究一個Android項目,我希望該項目可以防止用戶訪問我的應用程序數據庫的內容。

我認為有3種方法,但我不知道哪一種是最好的,也不知道如何工作。

我的問題是我不知道哪種方法是最好的,以及它是如何工作的。

  1. 將所有文本和數據加密到數據庫,並在我想使用時解密!
  2. 加密整個數據庫,並在應用需要時解密。
  3. 使用像SQLCipher這樣的第三方庫。

我正在做一個我希望防止用戶訪問我的應用數據庫內容的android項目

如果它在用戶的設備上,則它是用戶的數據庫,而不是您的數據庫。 如果它在您的硬件上,則只會是您的數據庫。

我的問題是我不知道哪種方法是最好的,以及它是如何工作的。

對於試圖阻止用戶訪問用戶的數據,所有方法均無效。

您的數據庫應位於內部存儲中,這是SQLite數據庫的默認位置。 大多數用戶無法訪問內部存儲來訪問數據庫。 唯一可以植根其設備的人。 任何具有技能和興趣的人都可以扎根設備並嘗試獲取應用程序中的數據庫,那么他們將具有以下技能和興趣:

  1. 對您的應用程序進行反向工程以找到您的加密算法和密鑰,或者

  2. 將數據庫上傳到某處,並說服其他人對您的應用程序進行反向工程以找到您的加密算法和密鑰

如果您不希望用戶訪問數據庫, 請不要將其放在他們的設備上 通過Web服務從您的服務器訪問它。

諸如適用於Android的SQLCipher之類的工具可用於保護用戶數據免受攻擊。 它們不能作為DRM解決方案有效。

如果您要完全加密數據,那么,請使用經過測試的現有庫,而不要自己做壞事! 例如,SQLite的作者本身出售了加密擴展名 (用於醫療信息系統等),還有其他一些可能的解決方案。 (我在Google上搜索了sqlite encryption而且我相信你也可以!)

但是,請注意,將加密數據和解密數據的密鑰同時保存在同一不受信任的設備上總是很麻煩; 這是DRM問題(即,您已經將用戶真正需要的所有東西都放到了用戶工具包上,並且用戶相對敵對)。 您應該考慮您的應用程序體系結構; Android設備往往連接良好,因此您可以查看是否適合將DB保留在您控制的服務器上,並且只向應用程序饋送少量數據(它可能緩存或不緩存)。

暫無
暫無

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

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