如果用户正在请求服务上的文件,我通常可以通过使用 PHP 的realpath()并确保它位于根目录下来保护他们不访问我想要的范围之外的文档。比如像这样:
$path = realpath($_GET['path']);
// Protect against LFI vulnerabilities
if (substr($path, 0, strlen($root)) == $root)
{
// safe
}
但是,realpath() 仅适用于已经存在的文件。如果我想确保用户将要写入我的脚本的位置在根目录下怎么办?
我不能使用 realpath(),我应该检查并去掉“..”引用吗?或者,还有更好的方法?