PHP 보안 구성
(1) PHP의 안전 모드를 켜세요 (권장 학습: PHP 프로그래밍 초보자부터 능숙한 사람까지 )
php의 안전 모드는 매우 중요한 내장 보안 메커니즘입니다. system()과 같은 PHP의 일부 기능을 제어할 수 있으며 많은 파일 작업 기능의 권한도 제어할 수 있습니다. 또한 /etc/passwd와 같은 특정 키 파일을 허용하지 않지만 기본 php.ini는 열리지 않습니다. 안전 모드의 경우 다음을 켭니다.
safe_mode = on
(2) 사용자 그룹 보안
safe_mode가 켜져 있으면 safe_mode_gid가 꺼집니다. , 그러면 PHP 스크립트가 파일에 접근할 수 있고, 같은 그룹의 사용자도 파일에 접근할 수 있습니다.
다음과 같이 설정하는 것이 좋습니다:
safe_mode_gid = off
설정하지 않으면 서버 웹 사이트 디렉토리에 있는 파일을 작동하지 못할 수 있습니다. 예를 들어 , 파일을 작동해야 할 때.
(3) 프로그램의 메인 디렉터리를 안전 모드에서 실행
안전 모드가 켜져 있지만 이제 특정 프로그램을 실행하려면 프로그램을 실행할 기본 디렉터리를 지정할 수 있습니다.
safe_mode_exec_dir = D:/usr/bin
일반적으로 어떤 프로그램도 실행할 필요가 없으므로 시스템 프로그램 디렉터리를 실행하지 않는 것이 좋습니다. 그런 다음 실행해야 하는 프로그램을 복사합니다. 예:
safe_mode_exec_dir = D:/tmp/cmd
그러나 어떤 프로그램도 실행하지 않는 것이 좋습니다. 그런 다음 웹 디렉토리를 가리킬 수 있습니다. # 🎜🎜#
safe_mode_exec_dir = D:/usr/www
(4) 안전 모드에서 파일 포함
안전 모드에서 특정 공개 파일을 포함하려면 옵션을 수정합니다. # 🎜🎜#safe_mode_include_dir = D:/usr/www/include/
사실 일반적으로 PHP 스크립트에 포함되는 파일은 프로그램 자체가 작성된 것이며 이는 특정 필요에 따라 설정할 수 있습니다.
(5) PHP 스크립트가 액세스할 수 있는 디렉토리를 제어합니다.open_basedir 옵션을 사용하여 PHP 스크립트가 지정된 디렉토리에만 액세스할 수 있도록 제어합니다. PHP 스크립트가 접근해서는 안 되는 파일에 접근하는 것을 방지하면 phpshell의 피해가 어느 정도 제한됩니다. 일반적으로 웹사이트 디렉토리에만 접근하도록 설정할 수 있습니다:
open_basedir = D:/usr/www(6 ) 위험한 기능 끄기# 🎜🎜#
안전 모드가 켜져 있으면 기능 금지는 필요하지 않지만 안전을 위해 고려하고 있습니다. 예를 들어, system()이나 PHP 정보를 볼 수 있는 PHPinfo()를 포함하여 명령을 실행할 수 있는 PHP 함수를 실행하고 싶지 않은 경우 해당 기능을 금지할 수 있습니다.
disable_functions = system,passthru,exec,shell_exec,popen,phpinfo파일 및 디렉터리 작업을 금지하려면 많은 파일 작업을 닫을 수 있습니다
disable_functions = chdir,chroot,dir,getcwd,opendir,readdir,scandir,fopen,unlink,delete,copy,mkdir, rmdir,rename,file,file_get_contents,fputs,fwrite,chgrp,chmod,chown위는 일반적으로 사용되는 파일 처리 기능 중 일부만 나열합니다. 위의 실행 명령 기능을 이 기능과 결합할 수도 있습니다. , 대부분의 phpshell에 저항할 수 있습니다.
(7) http 헤더에서 PHP 버전 정보 유출을 차단합니다
해커가 PHP 버전 정보를 얻는 것을 방지하기 위해 서버에서 http 헤더의 정보를 끌 수 있습니다:
expose_php = Off예를 들어 해커가 www.greatmo.com 80으로 텔넷을 실행하면 PHP 정보를 볼 수 없습니다.
(8) 전역 변수 등록 끄기
POST 또는 GET을 사용하여 제출된 변수를 포함하여 PHP로 제출된 변수는 자동으로 등록됩니다. 전역 변수는 직접 액세스할 수 있으므로 서버에 매우 안전하지 않으므로 전역 변수로 등록할 수 없으므로 전역 변수 등록 옵션을 끕니다.
register_globals = Off물론입니다. , 이렇게 설정되면 해당 변수를 얻기 위해 합리적인 방법을 사용해야 합니다. 예를 들어, GET에서 제출한 변수 var를 얻으려면 $_GET['var']를 사용하여 이를 얻어야 합니다. 이것에 주의.
(9) SQL 주입 방지를 위해 Magic_quotes_gpc 열기
SQL 주입은 작은 경우 웹사이트 백엔드에 침입하는 매우 위험한 문제입니다. , 심각한 경우 서버 전체가 다운되오니 주의하시기 바랍니다. php.ini에 다음 설정이 있습니다:
magic_quotes_gpc = Off이 기능은 기본적으로 꺼져 있습니다. 켜져 있으면 '를 '로 변환하는 등 사용자가 제출한 SQL 쿼리를 자동으로 변환합니다. 이렇게 하면 SQL 주입이 중요한 역할을 하는 것을 방지할 수 있습니다. 따라서 다음과 같이 설정하는 것이 좋습니다:
magic_quotes_gpc = On
(10) 오류 메시지 제어
일반적으로 PHP는 연결되어 있지 않을 때 이를 갖습니다. 일반적으로 오류 메시지에는 PHP 스크립트의 현재 경로 정보나 쿼리의 SQL 문이 포함되어 있으므로 일반적으로 이러한 정보는 해커에게 제공되면 안전하지 않습니다. 서버에서 오류 메시지를 비활성화하는 것이 좋습니다:
display_errors = Off# 🎜🎜#오류 메시지를 표시하려면 경고 위의 정보만 표시하는 등 오류 표시 수준을 설정해야 합니다.
error_reporting = E_WARNING & E_ERROR#🎜 🎜#물론, 그래도 오류 메시지는 끄는 것이 좋습니다.
위 내용은 PHP의 보안 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!