2010-06-29 101 views
20

我正在开发一个将存储用户敏感数据的应用程序。我的问题是使用其他应用程序,用户可以查看存储的数据。那么我需要为数据提供更好的安全性。Sqlite数据库安全

有什么办法可以为SQLite数据库和表提供更好的安全性吗?

回答

6

sqlite的作者提供了一个加密数据的版本。这不是免费的,虽然

+3

这似乎免费现在在http://www.sqlite.org/see/ – skv 2014-06-29 03:52:11

+0

@Jay是正确的 - 许可证是永久许可证$ 2000美元。 – DustinB 2017-10-21 04:02:26

15

在将数据输入数据库之前对数据进行加密。据我所知,SQLite数据库保存在/ data /目录中的某个文件中。更重要的是,您的数据以纯文本格式保存。这意味着有人可以通过将电话生根,获取.db SQLite文件并用文本编辑器打开它来提取数据。

所以,您的数据加密:)

- 好吧,也许不是一个文本编辑器,但一个简单的十六进制编辑器。无论如何...

+14

任何人能反编译的APK,并得到解密密钥。 – CommonsWare 2010-06-29 11:59:29

+1

@CommonsWare:嗯,是的,但建议一个更好的方法。我们正在讨论保护SQLite数据库。如果问题是关于总体数据安全性的话,那么将数据存储在某个地方的后端服务器上(通过安全连接进行通信)将是更好的方法。 – Shade 2010-06-29 13:16:30

+2

没有“更好的办法”。任何能够对其电话进行生根的人都能够反编译APK并获得解密密钥。加密数据库可以保护你免受某些百分比的人(那些知道如何根,但不打扰解密密钥的人)。这是一个相当基本的安全规则,您无法完全保护数据,防止持有相关设备的用户访问数据。 – CommonsWare 2010-06-29 14:00:35

0

你为什么要把敏感数据保存在手机上?如果它敏感,为什么不把它发回到你有控制权的服务器上。如果用户根据他们的电话,他们可以基本上做他们想要的。除此之外,像Shade提及的加密可能是您唯一的选择...

5

您可以使用从您的服务器检索到的用户特定盐加密数据。这样,即使使用root权限,您也需要用户salt来解密数据库。既然你已经控制了salt,你提供了一个额外的安全层,但是,你的用户总是需要一个网络连接来访问他们的数据。

11

退房SQLCipher for Android。它是免费的(Apache 2和BSD许可证)。

PS .:一些ORM现在也支持SQLCipher,例如,我们的greenDAO

0

保护数据库的好方法是使用密码保护的数据库,你可以通过创建

1-安卓SQL3包装库

2- libsqlite3_jni.so

还请阅读下面的文章是让你的搜索上面的选项,我希望这会有很大的帮助。能够生根自己的手机的

http://www.findbestopensource.com/product/sqlite3-android