我正在开发一个用户可以在线和离线的应用程序。我希望用户输入的数据与中央数据库同步。
该应用程序位于 Swing 中,并使用 Web 服务更新中央数据库中的数据。
我认为 SQLite 作为一种解决方案,但我担心安全性。每个客户端系统中的关注点都会有多个用户,每个用户都会有他的特定数据。 SQLite 支持这个吗?
在这种情况下,SQLite 还有其他替代方案吗?
我使用 Oracle 10g 作为我的中央数据库。 SQLite的作用是一个本地DB,存储数据直到用户上线
编辑::我在这里担心 SQLite 文件的安全性。通过我的初步分析,我发现访问 sqlite 文件时没有身份验证之类的功能。 希望我现在清楚了。
最佳答案
SQLite 不支持每用户身份验证(您可以使用密码,但对于整个数据库文件来说是相同的)。无论如何,每用户身份验证都不会有效,因为对数据库文件具有读取访问权限的用户只能直接读取该文件。您可以加密数据,但必须将解密 key 和算法存储在用户可以访问的可执行文件中。
当您想要保护每个用户的本地数据时,我建议将此责任委托(delegate)给操作系统。只需在当前用户的私有(private)用户目录中为每个用户存储一个单独的数据库文件(Windows 上为 %appdata%,unix 上为 ~/)。只要用户没有 admin/root 权限,操作系统就应该阻止他们访问彼此用户目录中的数据。
当然,只有当应用程序的每个用户在操作系统上都有一个单独的帐户时,这才有效。如果不是这种情况,您仍然可以对存储在公共(public)位置的每个用户使用单独的数据库,但使用从每个用户的密码派生的 key 对每个数据库文件进行加密。
关于java - 使用sqlite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14258871/