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