19

我正在开发一个简单的网站,我正在尝试一个 sqlite 数据库。与 MySQL 相比,当您连接到数据库时,您无需说出用户名/密码,而使用 MySQL 时您会这样做。

因此,任何人都可以访问它。保留敏感信息不是一个安全漏洞吗?

甚至隐藏您的 db.sqlite,从第三方程序/网络查询此数据库以获取信息应该不难。

谢谢你的时间。

4

4 回答 4

25

sqlite 依靠文件权限来保护数据,正如您所提到的,它不需要登录。来自IBM

SQLite 没有用户帐户的概念,而是依赖文件系统来获得所有数据库权限。这使得强制执行存储配额变得困难并且无法强制执行用户权限。

保护数据库的方法是设置文件权限,以便只有特定用户才能访问数据。如果您在 Linux 上运行网站,则可以使用chmod. 通常,您将 Web 服务器设置为在其自己的用户下运行,例如www-data,然后将对 sqlite 文件的访问限制为只有该用户。例如:

chown www-data database.db    # set ownership of the database.db file.
chmod 600 database.db         # allow only read-write by the owner.

这可以防止第三方程序或任何外部方通过利用文件系统安全性来读取数据库。

于 2013-05-20T22:22:16.423 回答
5

先前的答案只是部分正确。您可以拥有需要身份验证的数据库,但您必须将 SQLite 与 PHP 分开编译。

http://www.sqlite.org/src/doc/trunk/ext/userauth/user-auth.txt

于 2015-02-17T16:44:01.137 回答
3

因此,任何人都可以访问它。保留敏感信息不是一个安全漏洞吗?

正如其他人所说,这不是 SQLite 人的设计目标。他们还有其他目标,比如能够将数据库代码直接嵌入到您的应用程序中。

您可以使用密码保护和加密 SQLite 数据库,但您需要使用SQLCipher

于 2014-03-27T23:54:12.903 回答
1

除了上面所说的,您可以通过执行以下操作之一来保护您的 Web 服务器上的数据库:

  • 将数据库文件放在(Web)文档根目录之外
  • 阻止对文件的访问,即通过 Apache 服务器上的 .htaccess
于 2016-05-23T16:21:48.640 回答