먼저이 작업을 수행하지 마십시오! 너무 불안해! 이렇게하면 사이트의 모든 파일에 액세스 할 수 있습니다. SO BAD.
이제 실제 문제는 문자열이 작은 따옴표로 묶여 있다는 것입니다. 큰 따옴표로 변경하면 작동합니다. 그러나 당신은 여전히 이것을해서는 안됩니다.
$foo = "QQQ";
echo "asfd{$foo}asdf";
> asfdQQQasdf
echo 'asfd{$foo}asdf';
> asdf{$foo}asdf
취약점을 해결하는 한 가지 방법은 화이트리스트를 사용하는 것입니다. 다음은 간단한 예제이다
$file = "foo";
switch ($file) {
case "foo":
include ("pages/foo.txt");
break;
case "bar":
include ("pages/bar.php");
break;
default:
echo "YOU CANNOT ACCESS THIS FILE!";
break;
}
또 다른 방법은 허용되는 파일 이름의 배열을 가지고 요청 된 파일이 해당 배열에 있는지 확인하는 것입니다.
문자열을 먼저 분리해야합니다. 당신의 따옴표 사이의 무엇이든은 문자 적으로 취해집니다. – ericosg
아, 그러지 마세요. 이것은 가장 일반적인 취약점 중 하나입니다. 문제는 페이지 매개 변수로 아무 것도 입력 할 수 없으므로 서버에서 액세스 할 수있는 모든 파일을 포함 할 수 있다는 것입니다. –
1 # 나는 그것이 잘못되었다는 것을 깨달았습니다. 나는 너무 혼란 스러웠습니다. # 당신이 말한대로, 당신 말이 맞습니다. 제한/수정 방법이 있습니까? 나는 더 많은 매뉴얼이 될 것이므로 if를 사용하고 싶지 않다. 가능한 한 간단하게 유지하고 싶습니다. –