php 함수 eval()의 보안 설정 (php.ini) (웹취약점 보안)
작성자 정보
- 최고관리자 작성
- 작성일
컨텐츠 정보
- 1,372 조회
- 0 추천
- 목록
본문
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>
관련자료
-
다음