0

我正在开发一个用户在线和离线的应用程序。我希望用户输入的数据与中央数据库同步。

该应用程序位于 Swing 中,并使用 Web 服务来更新中央数据库中的数据。

我认为 SQLite 是一种解决方案,但我担心安全性。每个客户端系统中的关注点将有多个用户,并且每个用户都有他的特定数据。SQLite 支持这个吗?

在这种情况下,SQLite 还有其他替代方案吗?

我有 Oracle 10g 作为我的中央数据库。SQLite 的作用是一个本地数据库,存储数据直到用户上线

编辑:: 我在这里担心 SQLite 文件的安全性。通过我的初步分析,我发现访问 sqlite 文件时没有身份验证等功能。希望我现在很清楚。

4

1 回答 1

1

SQLite 不支持按用户身份验证(您可以使用密码,但对整个数据库文件都一样)。无论如何,按用户身份验证不会是有效的,因为对数据库文件具有读取权限的用户可以直接读取该文件。您可以加密数据,但您必须将解密密钥和算法存储在可执行文件中,用户可以访问它。

当您想保护每个用户的本地数据时,我建议将此责任委托给操作系统。只需在当前用户的私有用户目录中为每个用户存储一个单独的数据库文件(windows 上为 %appdata%,unix 上为 ~/)。只要用户没有 admin/root 权限,操作系统就应该阻止他们访问彼此用户目录中的数据。

当然,这仅在您的应用程序的每个用户在操作系统上也有一个单独的帐户时才有效。如果不是这种情况,您仍然可以为存储在公共位置的每个用户使用单独的数据库,但使用从每个用户的密码派生的密钥加密每个数据库文件。

于 2013-01-11T08:12:25.480 回答