我想拒绝访问file_exists / opendir / openfile等函数的文件data.xml
我的文件test.php包含:
$path="./mydata.html";
if ($handle = opendir($path)) {
}
closedir($handle);
如何在不阻塞功能的情况下使其无法读取?有可能吗?
感谢
答案 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之外。