Android:数据库与应用程序打包的安全性如何

时间:2011-09-26 04:31:16

标签: android database sqlite

我想知道用android中的应用程序打包数据库是多么安全。用户可以轻松访问数据库吗?由于我拥有的数据库将拥有数据,我不希望被用户滥用以进行滥用,在移动应用程序中保护数据库的最佳方法是什么?

我的应用程序也会使用网络服务(联系我自己的网站),例如HTTP:\ www.mysite.com/services/xxx

我的网站会将一些数据返回给移动应用。如果有人反编译java代码(在apk中),他将很容易访问我用于Web服务的URL。如何保护我的网站数据免受恶意用户的攻击。如果有人知道URL,他只需在浏览器中键入该URL并获取json格式的所有数据,这是我不想要的,因为这些数据可能非常敏感。即使我保持编码,用户也可以从java代码(他在反编译apk后获得)中了解编码。

如何保护我的数据库不被滥用?

如果我的应用程序要显示移动设备上的餐馆,酒吧等本地地点,我应该始终使用网络服务从网站上获取它们,或者提供具有这些详细信息的本地数据库,以便快速获取信息。在这种情况下,我可以提供UPDATE Web服务,它将更新本地数据库。但是我对本地数据库的安全性非常关注。

任何人都可以建议在哪里保存数据库以及如何保护它?

RGDS, 萨班

3 个答案:

答案 0 :(得分:8)

任何有根设备都可以轻松读取本地数据库和您的apk文件。 This tool甚至可以按照this youtube tutorial中的说明对您的资源进行反编译(实际上我从未尝试过这种方式)。

因此,您必须将数据加密存储在数据库中并根据应用程序代码对其进行解密,以确保没有人可以通过简单地将数据库从其设备的data目录中获取来访问它。

您不应将敏感数据(如密码等)放在资源文件夹中,因为它可以反编译,并将其放入您的代码中。

现在您的JSON API有些话。隐藏URL是不够的,因为用户可以通过嗅探器轻松跟踪您的请求,无论如何都可以获取。您应该提供身份验证机制来保护未经授权的访问,并通过SSL保护您的通信。 (例如,使用HTTP authentication - 仅在您的服务器提供SSL时才有意义。)

这是你应该考虑的事情,并决定你的数据实际上有多敏感。

答案 1 :(得分:2)

据我了解你要去:

  1. 在APK文件中打包初始数据库(比如res / asset文件夹)
  2. 首次运行时将数据库文件从res / asset爆炸到应用程序数据文件夹
  3. 然后从网站/ webservice
  4. 获取数据到DB

    在这种情况下,基本上存在2个漏洞(我的意思是存储数据):

    1. 初始数据库图像,因为它包含了APK(现实生活中只有ZIP存档),所以任何人都可以解压缩并查看数据库中包含的内容
    2. 存储在应用程序数据文件夹中的DB文件(通常是/ data / data / MY_APPLICATION_PACKAGE / databases)。此文件夹可在root设备上访问,因此您的数据可以轻松筛选
    3. 唯一可以保护的选项是加密数据库内容。最简单的方法是将这些敏感数据存储在BLOB中(以JSON的XML形式),并在实际使用某些记录之后/之前加密/解密这些BLOB。

      我亲自在我的应用程序中做到了 - 而且效果很好。

答案 2 :(得分:1)