0

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

我的文件 test.php 包含:

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

}

closedir($handle);

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

  • .ht 访问?
  • 我应该通过不同用户设置的 chmod 阻止文件而不是执行 php 脚本吗?
  • 另一种方式?

谢谢

4

1 回答 1

0

最简单的方法是编写一个函数来检查文件路径,并sanitize_filepath($path)在您接受用户数据时或在每个fopen()//之前调用 (ie 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']); ?>. (这显然是一个无用且不安全的脚本,但它是一个示例。)

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

于 2013-08-07T14:55:36.043 回答