>  기사  >  백엔드 개발  >  PHP의 보안 문제를 해결하는 방법

PHP의 보안 문제를 해결하는 방법

(*-*)浩
(*-*)浩원래의
2019-09-19 15:26:073182검색

PHP 보안 구성

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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