我获得了一个用户文件的文件路径,我想确保此路径是有效的现有用户文件,而不是虚假或系统文件或类似的东西。
我知道我可以使用file_exists来检查它是否存在,但我不确定如何确保该文件位于某个子目录中...
答案 0 :(得分:1)
您应该了解硬链接和符号链接。如果您要更改文件,请执行stat以检查它是否为常规文件且其节点数为1。
$subdirToCheck = "/home/mysubdir/";
$file = "relativepath/userfile";
$absfile = realpath($file);
if ($absfile !== FALSE && file_exists($absfile) &&
substr($absfile, 0, strlen($subdirToCheck)) == $subdirToCheck) {
$ls = lstat($absfile);
if (is_link($ls) || $ls["nlink"] > 1) {
//abort
}
else {
//do stuff
}
}