강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

php 함수 eval()의 보안 설정 (php.ini) (웹취약점 보안)

작성자 정보

  • 최고관리자 작성
  • 작성일

컨텐츠 정보

본문

php의 eval() 함수는 사용하지 못하도록 설정해야 합니다. 

eval 함수를 사용하여 웹에서  URL호출을 하여 쉘명령어를 사용할수 있게 됩니다. 

eval()함수 외에도 setInterval() 과 setTimeout(), Function() 생성자에 문자열을 넘기는 것도 eval() 을  사용하는 것과 매우 유사하기 때문에 사용제한 해야 한다. 


1. 악성코드 삽입예

코드 삽입예는 다음과 같다.

<?php class hasldhfals { public function __construct($asdfasdf){ @eval("/*asdfasd*/".$asdfasd""); }}new asdfa($_REQUEST['www']);?>


위의 코드가 삽입되어 있다면.. URL을 통하여 쉘명령어를 사용가능하다. 
 


2. php.ini 파일 설정
 

이를 위해서  php.ini 파일에 다음 설정을 해두어야 합니다. 

 

disable_functions = eval, setInterval, setTimeout, Function


또는  좀 더 보완한다면. 
disable_functions = "eval,exec,system,shell_exec,proc_open,show_source,mail,sendmail,popen,phpinfo,escapeshellarg,escapeshellcmd,passthru,symlink,eval/*yfuxi*/"

 

설정을 해두는 것을 강력히 권합니다. 

3. 또다른 설정방법 


이렇게 하면 php 파일의 실행이 금지됩니다.

engine 지시자는 httpd.conf 또는 httpd-vhost.con파일이나 php.ini .htaccess 에서 제어할 수 있습니다.

 

<Directory "/home/users/*/files">

 php_admin_flag Engine Off

</Directory>


그리고  

.htaccess 파일 사용에 다음과같이 설정하여  특정 디렉토리나 파일에서 eval() 함수를 사용제한 할 수 있다. 
물론, httpd.conf 파일이나 httpd-vhost.conf 파일에서 해당 디렉토리에 대한 .htaccess 사용 설정이 되어 있어야 한다. 



<Files *.php>

php_flag engine off

</Files>

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,159 명
  • 현재 강좌수 :  36,520 개
  • 현재 접속자 :  242 명