android如何保护文件不被用户复制或查看

android如何保护文件不被用户复制或查看,android,android-sqlite,Android,Android Sqlite,我正在开发一个应用程序,收集数据花了我整整两个月的时间。 如何保护我的数据库和文件?由于数据库很大,我将其压缩(使用密码),并将其放在资产文件夹中。我可以解开它 2个问题: 在哪里我可以提取它,即使有根设备,也没有人可以访问它 从zipfile中提取数据库后,我想将其复制到我的应用程序数据库中。用户是否可以访问数据库 正如我所知,没有办法从用户的视线中隐藏您的文件。他们有时可以很容易地访问您的资源。但是你应该加密你的数据 您可以使用SQLCipher库来保护数据。看 虽然它有一些开销,但您可以以

我正在开发一个应用程序,收集数据花了我整整两个月的时间。 如何保护我的数据库和文件?由于数据库很大,我将其压缩(使用密码),并将其放在资产文件夹中。我可以解开它

2个问题:

  • 在哪里我可以提取它,即使有根设备,也没有人可以访问它
  • 从zipfile中提取数据库后,我想将其复制到我的应用程序数据库中。用户是否可以访问数据库

  • 正如我所知,没有办法从用户的视线中隐藏您的文件。他们有时可以很容易地访问您的资源。但是你应该加密你的数据

    您可以使用SQLCipher库来保护数据。看

    虽然它有一些开销,但您可以以安全的方式分发数据。
    希望它能帮助您

    这取决于您期望的攻击者有多聪明。如果你期望的是普通用户,不要担心——只要把它放在你的数据目录中,他们就必须在手机根目录下才能看到它。您可以通过超级用户对文件进行加密。从一个决心不起作用的黑客那里——他将反编译apk并找到密钥。你可以从网站上传递密钥,但是一个好的黑客会在调试器下运行它,并在内存中找到密钥。保护大部分数据的最佳方法不是将其放在应用程序中,而是根据需要通过webservice下载所需的数据,但这需要花费金钱和时间。

    应用程序是否需要定期读取/写入此数据库?如果是这样,您就无法阻止一个专用用户访问其内容。@JonathonReinhart。谢谢你的回复。我可以有两个数据库,一个用于我的数据,另一个用于其他需要更改的内容。我只是想保护它。还有吗?想想看:您的应用程序需要采取一系列步骤从该数据库读取数据。任何有决心的攻击者都可以采取完全相同的步骤。如果CPU可以访问这些信息,攻击者也可以。真正的问题是:如果这些信息如此有价值,为什么必须将其包含在用户设备上的应用程序中?而对称密钥的位置。。。在应用程序中,在哪里可以轻松恢复?我想SQLCipher对这个问题没有任何帮助。但是我们可以从安全的web服务中获取密码(对称密钥)。简单的方法是在应用程序中隐藏密码,例如使用代码生成密码和使用其他技巧。但我知道最后一条路并不完全安全,但很难发动攻击。在我看来,最好的方法是从SSL web服务获取密码。希望您与我们分享您的想法,这样攻击者就可以使用应用程序中的任何信息手动连接到SSL Web服务(在他的桌面上),下载密码,并解锁数据库。是的。你说得对。我忘了说我的经历。我有这个问题。我用NDK准备了一个本机函数,并要求函数给我密码,但在返回密码之前需要进行一些检查,以检查其他人是否不能使用我的本机库。如果有人在其手机上建立根目录,他们是否可以查看数据文件夹并复制数据库?另一个问题,如果我在asset文件夹中使用密码压缩数据库并在我的应用程序中解压,攻击者是否仍有可能获得密码?是的,如果他们以根用户身份访问手机,则可以复制该文件。是的,如果你使用zip密码,他们仍然可以得到它-你需要在应用程序的某个地方解压它的密码。当然,在这种级别的保护中,您需要是具有一些逆向工程技能的程序员,而不仅仅是用户。