PHP 보안 설정 최적화

7374 단어 PHP최적화 하 다.
스 크 립 트 언어 와 초기 버 전 디자인 의 여러 가지 원인 으로 인해 phop 프로젝트 에 많은 안전 위험 이 존재 합 니 다.설정 옵션 을 보면 다음 과 같은 최 적 화 를 할 수 있 습 니 다.
1.PHP 오류 출력 차단/etc/php.ini(기본 설정 파일 위치)에서 다음 설정 값 을 Off 로 변경 합 니 다.

display_errors=Off
잘못된 스 택 정 보 를 웹 페이지 에 직접 출력 하여 해커 가 관련 정 보 를 이용 하 는 것 을 방지 하지 마 세 요.
정확 한 방법 은:
오류 로 그 를 로그 파일 에 써 서 문 제 를 쉽게 찾 을 수 있 습 니 다.
2.PHP 버 전 차단
기본적으로 PHP 버 전 은 다음 과 같이 되 돌아 오 는 헤더 에 표 시 됩 니 다.
Response Headers X-powered-by: PHP/7.2.0
php.ini 의 다음 설정 값 을 Off 로 변경 합 니 다.

expose_php=Off
3.전역 변 수 를 닫 습 니 다.
전역 변 수 를 열 면 일부 폼 이 제출 한 데 이 터 를 전역 변수 로 자동 으로 등록 합 니 다.코드 는 다음 과 같 습 니 다:

<form action="/login" method="post">
<input name="username" type="text">
<input name="password" type="password">
<input type="submit" value="submit" name="submit"></form>
전역 변 수 를 열 면 서버 쪽 PHP 스 크 립 트 는 username 과 password 로 사용자 이름과 비밀 번 호 를 가 져 올 수 있 습 니 다.이 는 큰 스 크 립 트 주입 위험 을 초래 할 수 있 습 니 다.
오픈 방법 은 php.ini 에서 다음 과 같이 수정 합 니 다.

register_globals=On
닫 기 를 권장 합 니 다.매개 변 수 는 다음 과 같 습 니 다.

register_globals=Off
닫 히 면 P OST,GET、$_REQUEST 에서 관련 인 자 를 가 져 옵 니 다.
4.파일 시스템 제한
오픈basedir 는 PHP 가 접근 할 수 있 는 시스템 디 렉 터 리 를 제한 합 니 다.
아래 스 크 립 트 코드(hack.php)를 제한 하지 않 으 면 시스템 암 호 를 가 져 올 수 있 습 니 다.

<?php

echo file_get_contents('/etc/passwd');
설정 하면 오류 가 발생 합 니 다.관련 정 보 를 표시 하지 않 고 시스템 디 렉 터 리 b 가 불법 으로 접근 하지 않도록 합 니 다.

PHP Warning: file_get_contents(): open_basedir restriction in effect. File(/etc/passwd) is not within the allowed path(s): (/var/www) in /var/www/hack.php on line 3

Warning: file_get_contents(): open_basedir restriction in effect. File(/etc/passwd) is not within the allowed path(s): (/var/www) in /var/www/hack.php on line 3 PHP Warning: file_get_contents(/etc/passwd): failed to open stream: Operation not permitted in /var/www/hack.php on line 3

Warning: file_get_contents(/etc/passwd): failed to open stream: Operation not permitted in /var/www/hack.php on line 3
설정 방법 은 다음 과 같 습 니 다.

open_basedir=/var/www
5.원 격 자원 접근 금지.

allow_url_fopen=Off allow_url_include=Off
기타 제3자 보안 확장
6.Suhosin。
4.567914.PHP 프로그램의 보호 시스템 입 니 다.서버 와 사용 자 를 보호 하고 PHP 프로그램 과 PHP 핵심 에서 알 고 있 거나 알 수 없 는 결함 을 막 기 위해 설계 되 었 습 니 다.Suhosin 은 두 개의 독립 된 부분 이 있 으 며 사용 시 따로 사용 하거나 공동으로 사용 할 수 있 습 니 다.
첫 번 째 부분 은 PHP 핵심 에 사용 되 는 패 치 입 니 다.버퍼 가 넘 치 거나 문자열 을 포맷 하 는 약점 을 막 을 수 있 습 니 다.(이것 은 필수 입 니 다!)
두 번 째 부분 은 강력 한 PHP 확장(확장 모드 가 좋 고 설치 가 편리 합 니 다.)입 니 다.다른 모든 보호 조 치 를 포함 합 니 다.
설치 확장

wget http://download.suhosin.org/suhosin-0.9.37.1.tar.gz
tar zxvf suhosin-0.9.37.1.tar.gz
cd suhosin-0.9.37.1/
phpize
./configure --with-php-config=/usr/local/bin/php-config
make
make install
 php.ini   suhosin.so  

extension=suhosin.so
특성
시 뮬 레이 터 보호 모드
  • 두 함수 sha 256()와 sha 256 증가file()부터 PHP 핵심 까지
  • 모든 플랫폼,CRYPT 가입BLOWFISH 에서 함수 crypt()까지
  • phopinfo()페이지 에 대한 투명 보호SQL 데이터베이스 사용자 보호
    런 타임 보호
    암호 화 쿠키
    다양한 종류의 빈틈 포함 방지(원 격 URL 포함 허용 하지 않 음(블랙/화이트 리스트);업로드 한 파일 을 포함 할 수 없습니다.디 렉 터 리 크로스 공격 방지)
    preg 금지 허용replace()
    eval()함수 금지 허용
    최대 실행 깊이 를 설정 하여 무한 재 귀 를 방지 합 니 다.
    모든 vhost 에서 흑백 명단 설정 지원
    코드 실행 에 분 리 된 함수 흑백 명단 을 제공 합 니 다.
    HTTP 응답 분할 구멍 방지
    스 크 립 트 방지 memory제한 옵션
    함수 extract(),import 와 같은 PHP 를 보호 하 는 슈퍼 글로벌request_vars()
    mail()함수 의 새 줄 공격 방지
    preg 방지replace()의 공격,
    세 션 보호
    세 션 데이터 암호 화
    세 션 납치 방지
    긴 session id 방지
    악의 적 인 session id 방지
    4.567914.안의 데 이 터 는 보통 서버 에 명문 으로 저장 된다.여기 서버 에서 복호화$SESSION。이렇게 하면 Session 의 핸들 을 Memcache 나 데이터베이스 에 저장 할 때 쉽게 무 너 지지 않 고 우리 의 session 데 이 터 는 민감 한 필드 를 저장 하 는 경우 가 많 습 니 다.
    이 기능 은 부족 한 상태 에서 사용 되 며 php.ini 를 통 해 수정 할 수 있 습 니 다.
    
    suhosin.session.encrypt = On
    suhosin.session.cryptkey = zuHywawAthLavJohyRilvyecyondOdjo
    suhosin.session.cryptua = On
    suhosin.session.cryptdocroot = On
    
    ;; IPv4 only
    suhosin.session.cryptraddr = 0
    suhosin.session.checkraddr = 0
    쿠키 암호 화
    쿠키 가 클 라 이언 트 브 라 우 저 에서 전송 하 는 HTTP 헤더 도 명문 화 되 어 있다.암호 화 된 쿠키 를 통 해 프로그램 이 많은 공격 을 하 는 것 을 보호 할 수 있 습 니 다.예 를 들 어
    Cookie 변경:공격 자 는 다른 합 리 적 인 쿠키 값 을 추측 하여 프로그램 을 공격 하려 고 시도 할 수 있 습 니 다.
    크로스 애플 리 케 이 션 쿠키 사용:설정 되 지 않 은 애플 리 케 이 션 은 같은 세 션 저장 소 를 가지 고 있 을 수 있 습 니 다.모든 세 션 이 기본적으로/tmp 디 렉 터 리 에 저장 되 어 있 으 면 한 애플 리 케 이 션 의 쿠키 는 다른 애플 리 케 이 션 에 다시 사용 되 지 않 을 수 있 습 니 다.암호 화 키 만 다 르 면.
    php.ini 에서 쿠키 암호 화 설정:
    
    suhosin.cookie.encrypt = On
    
    ;; the cryptkey should be generated, e.g. with 'apg -m 32'
    suhosin.cookie.cryptkey = oykBicmyitApmireipsacsumhylWaps1
    suhosin.cookie.cryptua = On
    suhosin.cookie.cryptdocroot = On
    
    ;; whitelist/blacklist (use only one)
    ;suhosin.cookie.cryptlist = WALLET,IDEAS
    suhosin.cookie.plainlist = LANGUAGE
    
    ;; IPv4 only
    suhosin.cookie.cryptraddr = 0
    suhosin.cookie.checkraddr = 0
    Blocking Functions
      
    
    ##  PHP Session   tmp   
    ll -rt /tmp | grep sess
    ##          sesson   
    cat sess_ururh83qvkkhv0n51lg17r4aj6
    //      
    ##         sesson    
    cat sess_ukkiiiheedupem8k4hheo0b0v4
    //      
               
    차단 기능
    화이트 리스트
    
    ##           
    suhosin.executor.func.whitelist = htmlentities,htmlspecialchars,base64_encode
    suhosin.executor.eval.whitelist = htmlentities,htmlspecialchars,base64_encode
    
    <?php
    echo htmlentities('<test>');
    eval('echo htmlentities("<test>");');
    블랙리스트
    
    ##           
    suhosin.executor.func.blacklist = assert,unserialize,exec,popen,proc_open,passthru,shell_exec,system,hail,parse_str,mt_srand
    suhosin.executor.eval.whitelist = assert,unserialize,exec,popen,proc_open,passthru,shell_exec,system,hail,parse_str,mt_srand
                   
    
    suhosin.simulation = 1
    suhosin.log.file = 511
    suhosin.log.file.name = /tmp/suhosin-alert.log
    기타 설정 항목
    
    suhosin.executor.include.max_traversal          ,           
    suhosin.executor.include.whitelist         URL,     
    suhosin.executor.include.blacklist         URL,     
    suhosin.executor.disable_eval = On      eval  
    
    suhosin.upload.max_uploads
    suhosin.upload.disallow_elf
    suhosin.upload.disallow_binary
    suhosin.upload.remove_binary
    suhosin.upload.verification_script            ,              webshell  
    Suhosin 을 사용 하면 오류 로 그 를 얻 을 수 있 습 니 다.이 로 그 를 시스템 로그 에 넣 을 수도 있 고 다른 임의의 로그 파일 에 쓸 수도 있 습 니 다.
    모든 가상 호스트 에 블랙리스트 와 화이트 리스트 를 만 들 수 있 습 니 다.
    GET 와 POST 요청,파일 업로드,쿠키 를 걸 러 낼 수 있 습 니 다.
    암호 화 된 세 션 과 쿠키 를 전송 할 수 있 고 전송 할 수 없 는 저장 소 온라인 등 을 설정 할 수 있 습 니 다.
    원본 PHP 강화 패 치 와 는 달리 Suhosin 은 Zend Optimizer 와 같은 제3자 확장 소프트웨어 에 호 환 될 수 있 습 니 다.
    여기 서 PHP 보안 설정 최적화 에 관 한 상세 한 설명 은 여기까지 입 니 다.더 많은 관련 PHP 보안 설정 최적화 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

    좋은 웹페이지 즐겨찾기