遵循答案https://stackoverflow.com/a/4205278/10329981
$basepath = '/foo/bar/baz/';
$realBase = realpath($basepath);
$userpath = $basepath . $_GET['path'];
$realUserPath = realpath($userpath);
if ($realUserPath === false || strpos($realUserPath, $realBase) !== 0) {
//Directory Traversal!
} else {
//Good path!
}
如何确保不存在的路径不是路径遍历。说一个函数为用户上传的文件创建一个新路径,该目录在系统中尚不存在,如何确保该文件不包含任何路径遍历。我不能使用realPath(),因为目录不存在,它将返回false。