2

我有一个文件,除了我自己的服务器(通过 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) 你们如何看待使用这种方法?

4

4 回答 4

7

由于您直接命名一个文件,因此只有当它myfile.xml是获取该文件的唯一方法时才是安全的。如果某人对您的服务器具有 shell 级别访问权限,并且可以使用不同的名称创建指向该文件的硬链接,例如ln myfile.xml heehee.txt,那么他们将能够获取文件的内容 vi heehee.txt,因为他们没有通过 'myfile .xml'。

最佳做法是将文件完全保留在文档根目录之外。这并不能阻止符号链接/硬链接攻击,但它确实阻止了某些绕过攻击。

于 2012-09-14T14:46:07.597 回答
2

如果您在脚本中读取文件,则根本不会通过 Apache,因此您甚至不允许使用 localhost。简单地否认一切,仅此而已。

(加上其他关于最佳位置的答案不在文档根目录中 - 如果您的权限不允许您将文件放在其他位置,则仅使用全部拒绝,例如您有一个有效的基本限制)

于 2012-09-14T14:46:43.087 回答
0

无论如何,有人可以解决这个问题并直接访问文件吗?

简而言之,不。

是否安全。

这就是为什么发明了拒绝一切的原因。

大家觉得使用这种方法怎么样?

除非您在本地主机上托管外国 php 代码,否则绝对没有必要。

于 2012-09-14T14:47:30.703 回答
0

这基本上是网络服务器级别的安全性。如果有另一个漏洞,即通过使用本地文件系统的 SQLI 攻击或一些远程文件包含安全漏洞,你几乎是 pwned。因此,我会考虑加密文件,并将其 acl/chmod 降低到最需要的用户/组,并且大多数服务器/网络托管公司为此类数据提供私有/目录。

于 2012-09-14T14:49:18.640 回答