(1) PHP의 안전 모드 켜기
php의 안전 모드는 system(),
등 PHP의 일부 기능을 제어할 수 있는 매우 중요한 내장 보안 메커니즘입니다. 동시에 많은 파일 작업 기능의 권한이 제어되며 /etc/passwd와 같은 특정 키 파일은 허용되지 않습니다.
그러나 기본 php.ini는 안전 모드를 열지 않습니다. put it Open:
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 함수나 PHP 정보를 볼 수 있는
phpinfo()와 같은 함수를 실행하고 싶지 않다고 느끼면 비활성화할 수 있습니다:
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.shilicn.com 80 텔넷을 사용하면 PHP 정보를 볼 수 없습니다.
(8) 전역 변수 등록 끄기
POST 또는 GET을 사용하여 제출된 변수를 포함하여 PHP로 제출된 변수는 자동으로 전역 변수로 등록되며 직접 액세스할 수 있습니다.
이것은 서버에 매우 위험하므로 전역 변수로 등록할 수 없으므로 전역 변수 등록 옵션을 끕니다.
register_globals = Off
물론, 이렇게 설정했다면 GET으로 제출된 변수 var를 얻는 등 합리적인 방법을 사용하여 해당 변수를 얻어야 합니다.
그런 다음 $_GET['var']를 사용해야 합니다. 이를 얻으려면 PHP 프로그래머는 이에 주의해야 합니다.
(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
물론, 여전히 오류 프롬프트를 끄는 것이 좋습니다.
(11) 오류 로그
display_errors를 끈 후 오류 정보를 기록하여 서버가 실행되는 이유를 찾는 것이 좋습니다.
log_errors =
동시에 오류 로그가 저장되는 디렉터리도 설정해야 합니다. 루트 아파치 로그를 함께 저장하는 것이 좋습니다.
error_log = D:/usr/ local/apache2/logs/php_error.log
참고: Give 파일은 Apache 사용자 및 그룹에 대한 쓰기 권한을 허용해야 합니다.
MYSQL 작업 다운그레이드
mysqlstart와 같은 새 사용자 만들기
net user mysqlstart ****microsoft /add
net localgroup users mysqlstart / del
은 어떤 그룹에도 속하지 않습니다.
MYSQL이 d:mysql에 설치된 경우 mysqlstart에 전체 제어 권한을 부여하고
시스템에서 MYSQL의 서비스 속성을 설정합니다. service 로그인 속성에서 이 사용자 mysqlstart를 선택하고 비밀번호 OK를 입력합니다.
MYSQL 서비스를 다시 시작하면 MYSQL이 낮은 권한으로 실행됩니다.
net user apache ****microsoft /add
net localgroup users apache /del
알겠습니다. 어떤 그룹에도 속하지 않는 사용자 apche를 만들었습니다.
컴퓨터 관리자를 열고, 서비스를 선택하고, Apache 서비스 속성을 클릭하고, 로그온을 선택하고, 이 계정을 선택하고, 위에서 만든 계정과 비밀번호를 입력하고,
다시 시작합니다. 아파치 서비스, 좋아요, 아파치가 낮은 권한으로 실행 중입니다.
실제로 Apache 사용자가 원하는 작업만 수행할 수 있도록 각 폴더의 권한을 설정하고 각 디렉토리에 대해 별도의 읽기-쓰기 사용자를 생성할 수도 있습니다.
이 역시 많은 가상 호스트 제공업체에서 널리 사용하는 구성 방법이지만 이를 방지하기 위해 사용하면 과잉입니다. (http://www.65066.com.cn)