【问题标题】:sqlite user/password securitysqlite 用户/密码安全
【发布时间】:2013-05-20 21:42:13
【问题描述】:

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

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

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

感谢您的宝贵时间。

【问题讨论】:

  • 毕竟,它被设计成一个轻量级数据库,没有全面解决方案的臃肿和/或便利性——因此是“SQLite”中的“精简版” .

标签: sqlite security


【解决方案1】:

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

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

保护数据库的方法是设置文件权限,以便只有特定用户才能访问数据。如果你在 Linux 上运行一个网站,你可以使用chmod 设置这些。通常,您将 Web 服务器设置为在其 own user 下运行,例如 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.

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

【讨论】:

  • 可以做一件事来稍微增强安全性,使用 SQLite 的加密扩展之一。但仅此而已。
  • 您能否详细说明“通常情况下,您将 Web 服务器设置为在其自己的用户下运行,然后将访问 sqlite 文件的权限仅限于该用户。”,好吗?
  • @T.Woody - 我添加了一些关于如何限制对 sqlite 文件的访问的额外细节。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

      除上述内容外,您还可以通过执行以下操作之一来保护 Web 服务器上的数据库:

      • 将数据库文件放在(Web)文档根目录之外
      • 阻止对文件的访问,即通过 Apache 服务器上的 .htaccess

      【讨论】:

        猜你喜欢
        • 2011-02-11
        • 2011-05-28
        • 1970-01-01
        • 2021-03-25
        • 1970-01-01
        • 2012-02-29
        • 2012-10-07
        • 1970-01-01
        • 2011-09-28
        相关资源
        最近更新 更多