>백엔드 개발 >PHP 튜토리얼 >PHP는 IP 블랙리스트 및 화이트리스트 필터링을 구현합니다.

PHP는 IP 블랙리스트 및 화이트리스트 필터링을 구현합니다.

巴扎黑
巴扎黑원래의
2016-11-23 10:56:001642검색

PHP 파일에 대해 IP 필터링을 수행하고 싶다는 운영 및 유지 관리 동료로부터 요구 사항이 나왔습니다. 서버를 직접 구성하는 것이 불편하여 php 파일 시작 부분에 IP를 직접 필터링해야 했습니다.
IP 필터링 규칙은 다음 형식을 가질 수 있습니다.
1. 192.168.0.1과 같은 완전한 IP 주소
2. 192.168.0.*과 같은 특정 IP 세그먼트.
운영 및 유지 관리는 여러 IP 필터링 규칙으로 구성되고 배열에 저장되는 IP 블랙 및 화이트 목록을 사용자 정의할 수 있습니다. 코드를 작성하면 IP 블랙 및 화이트 리스트 기능이 구현됩니다. 비교적 간단한 요구 사항입니다.
먼저 기능을 구현합니다. 이 기능은 IP가 IP 필터링 규칙과 일치하는지 확인하는 것입니다.

function ip_test($ip,$iprule){
   $ipruleregexp=str_replace('.*','ph',$iprule);
   $ipruleregexp=preg_quote($ipruleregexp,'/');
   $ipruleregexp=str_replace('ph','\.[0-9]{1,3}',$ipruleregexp);
   if(preg_match('/^'.$ipruleregexp.'$/',$ip)) return true;
   else return false;
   
}

핵심 기능 ip_test를 구현한 후 다음 프로세스는 훨씬 간단합니다. a simple traversal 목록의 각 규칙에 대해 현재 연결된 IP가 규칙을 준수하는지 확인하고 해당 단계를 수행합니다.
화이트리스트, IP가 하나 이상의 규칙을 충족하면 계속 작업을 수행합니다
이로써 PHP에서 구현되는 간단한 IP 블랙 및 화이트 목록 필터링이 완성됩니다. 이 블로그는 주로 기술지원, 운영 및 유지보수 등 개발이 아닌 분들을 위한 블로그입니다. 너무 간단해서 처음에는 쓰고 싶지 않았는데 나중에 동료가 도와줘서 고맙다고 하면서 오랫동안 인터넷에서 이것저것 찾아봤는데 마땅한 해결책을 못 찾았다고 하더군요. . 누군가에게는 이것이 정말 필요할지도 모른다고 생각했습니다.

 $curr_ip=$_SERVER['REMOTE_ADDR'];
     $white_list=array(...); //白名单规则
     $test_success=false;
     foreach($white_list as $iprule){
        if(ip_test($curr_ip,$iprule)){
           $test_success=true;
           break;
        }
     }
     if(!$test_success) exit('IP not in white list');

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