繁体   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