PHP에서 간단한 디렉토리 목록 스크립트를 구현하고 있습니다.PHP에서 사용자 정의 경로가 안전한지 확인하십시오.
내가 전달 경로가 디렉토리 핸들을 열고 echo
가 다짜고짜 결과를 보내고 전에 안전한지 확인하고 싶다.
$f = $_GET["f"];
if(! $f) {
$f = "/";
}
// make sure $f is safe
$farr = explode("/",$f);
$unsafe = false;
foreach($farr as $farre) {
// protect against directory traversal
if(strpos($farre,"..") != false) {
$unsafe = true;
break;
}
if(end($farr) != $farre) {
// make sure no dots are present (except after the last slash in the file path)
if(strpos($farre,".") != false) {
$unsafe = true;
break;
}
}
}
사용자가 보낸 경로가 안전한지 확인하거나 공격으로부터 보호해야하는 다른 작업이 있습니까?
foreach() – Greg
에서 변수를 전환했습니다. O를 선택해 주셔서 감사합니다. –