使用opendir / openfile等阻止访问文件

时间:2013-08-07 14:23:00

标签: php file .htaccess block chmod

我想拒绝访问file_exists / opendir / openfile等函数的文件data.xml

我的文件test.php包含:

$path="./mydata.html";
if ($handle = opendir($path)) {

}

closedir($handle);

如何在不阻塞功能的情况下使其无法读取?有可能吗?

  • htaccess的?
  • 我应该通过不同用户设置的chmod阻止文件,而不是执行php脚本吗?
  • 其他方式?

感谢

1 个答案:

答案 0 :(得分:0)

最简单的方法是编写一个函数来检查文件路径,并在接受用户数据时或每sanitize_filepath($path) / fopen() /之前调用(即)opendir() file_get_contents()。在sanitize_filepath()功能中,在$path上展开PATH_SEPARATOR并使用in_array()根据您提供的路径检查内部黑名单。

如果不注意继续,则返回false或抛出异常,文件路径如果你这样做,则返回true。

通过.htaccess阻止访问只是意味着我无法转到http://example.com/your/website/data.xml并查看该文件。如果我请求http://example.com/your/website/script.php?file=data.xml,假设script.php为<?= echo file_get_contents($_GET['file']); ?>,我仍然可以通过利用您的PHP脚本来访问该文件。 (这显然是一个无用且不安全的脚本,但它就是一个例子。)

通过chmodding防止访问权限可能会阻止PHP读取文件。如果您不需要阅读该文件,则不应该在PHP可以访问它的位置 - 将其移到您的webroot之外。