네트워크 보안 위협이 계속 증가함에 따라 PHP 원격 파일 포함 취약점은 개발자에게 큰 도전이되었습니다. 해커는이 취약점을 사용하여 악의적 인 작업을 수행하여 웹 사이트의 보안을 위험에 빠뜨릴 수 있습니다. 이 기사는 PHP 원격 파일의 포함 취약점을 효과적으로 수정하여 이러한 공격을 방지하는 방법을 자세히 소개합니다.
PHP 원격 파일에는 일반적으로 동적 웹 페이지에 나타나는 취약점이 포함되어 있습니다. 기능이 포함 된 PHP의 파일 ( 포함 또는 요구 사항 )이 완전히 확인하지 않고 사용자 입력을 완전히 확인하고 필터링하는 경우 해커는 악의적 인 원격 파일을 포함하도록 URL을 수정하여 웹 사이트를 공격하여 악성 코드를 실행할 수 있습니다.
가장 쉽고 가장 효과적인 수정은 원격 파일 포함을 비활성화하는 것입니다. PHP 구성 파일 ( php.ini )에서 allow_url_include를 0으로 설정하여 PHP가 원격 파일을 구문 분석하는 것을 방지하기 만하면됩니다.
샘플 코드 :
<?php
ini_set("allow_url_include", "0");
// code goes here
?>
파일을 포함하기 전에 사용자 입력을 엄격하게 필터링하고 확인하는 것이 중요합니다. Filter_Var 함수를 사용하여 사용자가 입력 한 URL을 확인하여 합법적 인 로컬 경로인지 확인할 수 있습니다. URL이 요구 사항을 충족하는 경우에만 파일을 포함시킵니다.
샘플 코드 :
<?php
$url = $_GET['file'];
$allowed_extensions = array("php", "html", "txt");
<p>// 조사하다URL로컬 파일 경로입니까?<br>
if (filter_var($url, FILTER_VALIDATE_URL) === false || !in_array(pathinfo($url, PATHINFO_EXTENSION), $allowed_extensions)) {<br>
echo "Invalid file URL";<br>
exit;<br>
}</p>
<p>// 로컬 파일이 포함되어 있습니다<br>
include $url;<br>
?><br>
화이트리스트를 사용하면 지정된 파일 만 포함 할 수 있으며 원격 파일 포함 취약점의 발생을 효과적으로 피할 수 있습니다. 해커가 악성 파일 경로를 성공적으로 주입하더라도 이런 식으로 공격하는 것은 불가능합니다.
샘플 코드 :
<?php
$file = $_GET['file'];
$allowed_files = array("header.php", "footer.php", "config.php");
<p>// 조사하다文件是否在白名单中<br>
if (!in_array($file, $allowed_files)) {<br>
echo "Invalid file";<br>
exit;<br>
}</p>
<p>// 파일 포함<br>
include $file;<br>
?><br>
의도하지 않은 파일을 포함하지 않으려면 상대 경로 대신 절대 경로를 사용하는 것이 가장 좋습니다. 이를 통해 지정된 디렉토리의 파일 만 포함되어 잠재적 보안 위험이 줄어 듭니다.
샘플 코드 :
<?php
$file = $_GET['file'];
$base_path = "/var/www/html/includes/";
<p>// 절대 경로를 접합합니다<br>
$file_path = $base_path . $file;</p>
<p>// 절대 경로를 포함하는 파일<br>
include $file_path;<br>
?><br>
위의 것은 PHP 원격 파일의 취약점을 수정하는 몇 가지 일반적인 방법입니다. 원격 파일이 사용자 입력 필터링, 화이트리스트 제한 및 절대 경로를 사용하여 원격 파일을 금지하면 원격 코드 실행 위험이 크게 줄어들 수 있습니다. 또한 개발자는 적시에 PHP 버전을 업데이트하고 안전한 코딩의 모범 사례를 따르며 웹 사이트의 보안을 지속적으로 개선해야합니다.