我从这里学习 SQLite3 ;它非常好且可移植,但是如果有人以某种方式知道数据库文件名test.db
,然后简单地下载它怎么办?
可能它会比 SQL 注入更危险,因为攻击者可以轻松获取整个数据库的副本。
我从这里学习 SQLite3 ;它非常好且可移植,但是如果有人以某种方式知道数据库文件名test.db
,然后简单地下载它怎么办?
可能它会比 SQL 注入更危险,因为攻击者可以轻松获取整个数据库的副本。
您可以限制.db
文件中的文件执行相同的操作,在位于根目录.htaccess
的文件中添加这行代码.htaccess
<Files ~ "\.db$">
Order allow,deny
Deny from all
</Files>
如果您(可能不会)将文件放在目录中,这将导致403 error
并且还将隐藏它,使其不会在文件列表中列出。index
只是不要将数据文件保存在可通过 HTTP 访问的目录中。
如果您使用的是 Postgresql 或 MySQL,则不会将它们使用的数据文件保存在您的 Web 根目录下。唯一相关的区别是,围绕服务器构建的数据库往往不会在您每次创建新数据库时询问它们应该将数据文件存储在哪里(并且只是/var/
根据它们的默认配置将它们保存在某个位置)。也不要公开 SQLite 文件。
给人们一个完整的数据库副本是否比 SQL 注入更危险的问题是值得商榷的。一方面,他们可以轻松访问所有数据,但另一方面,他们无法更改您网站上的任何内容。
这个问题是共享主机无处不在的结果:有一个共同的观点,即项目中的所有内容都必须放在 Web 服务器的文档根目录中。但是,在可能的情况下,最好在项目中为文档根目录创建一个子文件夹,例如www
. 然后,您设置一个自定义虚拟主机以指向您项目中的此文件夹。
这意味着您可以自由地在项目的其他地方为那些根本不能下载的文件创建文件夹。我倾向于创建一个名为/data
SQLite 数据库的文件夹。
不幸的是,并非所有主机都允许这样做,在这种情况下,@Subhanker 的.htaccess
方法是一个不错的解决方案。