我正在开发一个简单的网站,我正在尝试一个sqlite数据库。与MySQL相比,当您连接到数据库时,您没有说和用户/密码,而使用MySQL则可以。
所以,任何人都可以访问它。保存敏感信息不是一个安全漏洞吗?
甚至隐藏你的db.sqlite,从第三方程序/ web查询这个数据库以获取信息应该不难。
感谢您的时间。
答案 0 :(得分:16)
sqlite依赖文件权限来保护数据,正如您所提到的,它不需要登录。来自IBM
SQLite没有用户帐户的概念,而是依赖于文件系统来获取所有数据库权限。这使得强制执行存储配额变得困难,并且无法强制执行用户权限。
保护数据库的方法是设置文件权限,以便只有特定用户才能访问数据。如果您在Linux上运行网站,则可以使用chmod
进行设置。通常,您将Web服务器设置为在其自己的用户下运行,然后将对sqlite文件的访问权限仅限于该用户。
这可以防止第三方程序或任何外部方利用文件系统安全性来读取数据库。
答案 1 :(得分:2)
所以,任何人都可以访问它。保存敏感信息不是一个安全漏洞吗?
正如其他人所说,这不是SQLite人员的设计目标。他们有其他目标,比如能够直接在您的应用中嵌入数据库代码。
您可以使用密码保护和加密SQLite数据库,但需要使用SQLCipher。
答案 2 :(得分:2)
之前的答案只是部分正确。您可以拥有需要身份验证的数据库,但您必须从PHP单独编译SQLite。
http://www.sqlite.org/src/doc/trunk/ext/userauth/user-auth.txt
答案 3 :(得分:1)
除了上述内容之外,您可以通过以下方式之一保护您的Web服务器上的数据库: