>백엔드 개발 >PHP 튜토리얼 >취약점이 포함된 PHP 파일에 대한 자세한 설명과 예방방법

취약점이 포함된 PHP 파일에 대한 자세한 설명과 예방방법

PHPz
PHPz원래의
2023-06-08 11:03:471550검색

PHP 파일 포함 취약점 및 예방 방법에 대한 자세한 설명

웹 애플리케이션에서 파일 포함 기능은 매우 일반적인 기능입니다. 그러나 사용자가 입력한 매개변수를 주의 깊게 처리하지 않으면 파일 포함 취약점이 발생할 수 있습니다. 이 취약점으로 인해 공격자는 PHP 코드를 업로드하고 이를 응용 프로그램에 포함시켜 서버를 제어할 수 있습니다. 따라서 PHP 파일 인클루젼 취약점의 원인과 예방 방법에 대한 심층적인 이해가 매우 필요합니다.

PHP 파일 포함 취약점의 원인

PHP 파일 포함 취약점의 발생은 일반적으로 다음 두 가지 이유와 관련이 있습니다.

1. 사용자 입력 데이터를 올바르게 필터링하지 못함

PHP에서는 include, require 및 기타를 사용할 수 있습니다. 하나의 PHP 파일에 대한 함수는 다른 PHP 파일에 포함됩니다. 이러한 함수에서 사용자가 제출한 데이터를 파일 경로로 사용하면 공격자는 악성 코드가 포함된 PHP 스크립트를 쉽게 구성하여 서버에 업로드할 수 있습니다. 예:

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

이 예에서 공격자는 페이지 매개변수를 http://example.com/shell.php로 설정하여 shell.php 파일을 애플리케이션에 포함시킬 수 있습니다.

2. 사용자 입력 데이터의 적법성이 검증되지 않았습니다

사용자 입력 데이터가 필터링되더라도 공격자는 여전히 다른 방법을 사용하여 파일 포함 취약점을 달성할 수 있습니다. 예를 들어, ../와 같은 상대 경로를 사용하여 액세스하거나 %00 등을 사용하여 null 종료 문자를 우회합니다. 예:

<?php
   $page=$_GET['page'];
   include('pages/'.$page);
?>

이 예에서 공격자는 페이지 매개 변수를 ../shell.php로 설정하여 페이지 디렉터리의 파일 제한을 우회하고 상위 디렉터리의 shell.php 파일에 액세스할 수 있습니다.

PHP 파일 포함 취약점을 방지하는 방법

PHP 파일 포함 취약점을 효과적으로 방지하려면 다음 사항에 주의해야 합니다.

1 가능하면 절대 경로를 사용하세요.

절대 경로를 사용하면 공격자의 공격을 효과적으로 방지할 수 있습니다. using... / 및 기타 상대 경로는 제한을 우회합니다. 예를 들어 $_SERVER['DOCUMENT_ROOT']를 사용하여 웹 사이트의 루트 디렉터리를 얻은 다음 특정 파일 경로와 함께 include, require 및 기타 기능을 사용할 수 있습니다. 예:

<?php
   $page=$_GET['page'];
   include($_SERVER['DOCUMENT_ROOT'].'/pages/'.$page);
?>

2. 화이트리스트를 사용하여 입력 데이터 필터링

허용된 모든 파일 이름을 포함하는 화이트리스트를 만든 다음 사용자가 입력한 데이터를 필터링합니다. 예:

<?php
   $page=$_GET['page'];
   $whitelist=array('home','about','contact');
   if(in_array($page,$whitelist)){
      include("pages/".$page.".php");
   }else{
      echo "Invalid page requested";
   }
?>

3. include, require 등의 기능과 사용자가 입력한 데이터를 각각 다른 문에 넣습니다.

include, require 등의 기능과 사용자가 입력한 데이터를 각각 다른 문에 넣어 효과적으로 방지할 수 있습니다. 몇 가지 작은 버그. 예:

<?php
   $page=$_GET['page'];
   $file="pages/".$page;
   if(file_exists($file)){
      include($file);
   }else{
      echo "Invalid page requested";
   }
?>

간단히 말하면, 웹 애플리케이션 개발자가 PHP 파일 포함 취약점의 원인과 예방 방법을 이해하는 것은 매우 필요합니다. 적절한 예방 방법과 좋은 프로그래밍 습관을 사용하면 파일 포함 취약점의 발생을 효과적으로 줄이고 WEB 애플리케이션의 보안도 향상할 수 있습니다.

위 내용은 취약점이 포함된 PHP 파일에 대한 자세한 설명과 예방방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.