2013-05-29 3 views
2

파일 디렉토리에 액세스하는 확장 프로그램이 있습니다. 나는 Ajax 함수를 사용하여 컨트롤러에 대한 액세스가 필요한 경로를 보내고 컨트롤러에서 나는 $ _GET 원인을 사용한다. 그렇지 않으면 어떻게 동작하는지 알아 내지 못했다.

$image_file_path = $_GET["url_region"]; 
$d = dir($image_file_path) or die("File not found!"); 

물론 당신이 ../../ .. 같은 다른 요청을하면 다른 모든 디렉토리에 액세스 할 수 있습니다.

위생 처리 방법을 제안 해 주시겠습니까? 부디!

+0

허용되는 경로가 무엇인지 매우 엄격하게 지정할 수 있으며 사용자 제공 값이 일치하는지 여부를 확인할 수는 있지만 잘못된 확인이 항상 발생하기 쉽습니다. 확장 프로그램에서 URL이 생성되었는지 간단히 확인하는 것이 더 쉽습니다. URL에 누군가가 추측 할 수있는 비밀 키가 있으며, 모든 매개 변수가 내선에서 진정으로 유효하다는 것을 확인할 수 있습니다. 그것은 ** cweiske **에 의해 제안 된'cHash' 메쏘드가 그의 대답에 대해 나의 +1을하는 것입니다. – tmt

+0

@ 카스 캐발, 설명해 주셔서 감사합니다. 나는 그 옵션에 대해 연구 할 것이다. – Probandot

답변

1

URL 매개 변수로 cHash을 입력하고 TYPO3에서이를 확인하도록해야합니다. 이렇게하면 URL이 TYPO3 자체에서 생성되어 유효하다는 것을 확인할 수 있습니다.

+2

어쩌면 실용적인 코드 예제를 제공함으로써 대답을 확장 할 수있을 것이다. – tmt

0

당신은 쉽게 정규 표현식을 사용하여 매개 변수의 모든 "../"- 값을 잡을 수 있습니다. 다른 방법은 배열에 정의 된 사용 가능한 경로 또는 다른 액세스 권한을 확인하는 것입니다.

1

php.ini의 magic_quotes에 관계없이 매개 변수를 이스케이프 처리하지 않는 t3lib_div::_GET()을 사용해야합니다.

관련 문제