我有一个文件,我不想被除我自己的服务器之外的任何人访问(通过php请求)。我在.htaccess中使用以下内容:
<Files myfile.xml>
Order Deny,Allow
Deny from all
Allow from localhost
</Files>
但是想知道,这有多安全?反正有人可以绕过这个并直接进入文件吗? 在我的php文件中,我有:
simplexml_load_file("myfile.xml")
获取数据并使用
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
所以没有人可以直接访问该文件(仅限Ajax) 你们对使用这种方法有何看法?
答案 0 :(得分:8)
由于您直接命名文件,因此只有myfile.xml
是获取该文件的唯一方式才能安全。如果某人对您的服务器具有shell级别访问权限,并且可以使用其他名称创建该文件的硬链接,例如ln myfile.xml heehee.txt
,然后他们将能够获取文件的内容vi heehee.txt
,因为他们没有通过'myfile.xml'获取文件。
最佳做法是将文件完全保留在文档根目录之外。这并没有阻止符号链接/硬链接攻击,但它确实阻止了某些绕过攻击。
答案 1 :(得分:2)
如果您在脚本中读取文件,则根本不会通过Apache,因此您甚至不允许使用localhost。简单地否认一切,就是这样。
(加上关于最佳位置的其他答案是在文档根目录之外 - 如果您的权限不允许您将文件放在其他位置,则仅使用拒绝所有内容,例如您有基本限制)
答案 2 :(得分:0)
无论如何,有人可能能够解决这个问题 直接到文件?
简而言之,不。
安全吗?
这就是为什么发明拒绝所有的原因。
你们对使用这种方法有何看法?
在您的localhost上托管外国php代码之前绝对没有必要。
答案 3 :(得分:0)
这基本上是网络服务器级别的安全性。如果还有另一个漏洞,即通过使用本地文件系统的SQLI攻击或某些远程文件包含安全漏洞,那么你几乎已经知道了。所以我会考虑对文件进行加密,然后将其调整为最必要的用户/组,并且大多数服务器/虚拟主机公司都会为这些数据提供私有/目录。