如何防止root以上的访问? (通过点点斜线) p>
我可以看到分区中的所有文件。 p>
为了测试访问,我写了这个脚本& 添加了一个Go UP链接: p>
<?php
$ PartialPath = @ $ _ GET ['p']; if(empty($ PartialPath)){$ PartialPath =''; } else {$ PartialPath =“\\”。$ PartialPath; }
$ PartialPath_Root = dirname(__ FILE __);
$ ScanPath = $ PartialPath_Root。 $ PartialPath;
echo'扫描:',$ ScanPath,'< br>< br>';
$ Files_arr = scandir($ ScanPath);
foreach($ Files_arr as $ file){
if('。'=== $ file){}
else if('..'=== $ file){echo'< a href =“?p =',$ PartialPath,'.. /” target =“_ self”> .. GO UP< / a>< br>< br>'; }
else {echo $ file,'< br>'; }
}
?>
code> pre>
unsing @Hamidreza Kalantari回答 p>
我创建了一个过滤器来检测路径是否存在 在root之外: p>
if(Func_AllowOnlyRootPath($ PartialPath)==“1”){
// continue ...
} else {
echo' < br>不安全路径 - 外部根< br>';
// die('目录遍历已被阻止');
}
echo'< br> PartialPath:',$ PartialPath,'< br>';
function Func_AllowOnlyRootPath($ VerifyPath){if(empty) ($ VerifyPath)){return“1”; $ real_path = realpath($ VerifyPath); if(strpos($ real_path,($ _SERVER ['DOCUMENT_ROOT']))!== 0){return“0”; } return“1”; }
function Func_AllowOnlyPhpScriptPath($ VerifyPath){if(empty($ VerifyPath)){return“1”; $ real_path = realpath($ VerifyPath); if(strpos($ real_path,(dirname(__ FILE __)))!== 0){return“0”; } return“1”; }
code> pre>
div>