Heim > Backend-Entwicklung > PHP-Tutorial > PHP implementiert IP-Black- und Whitelist-Filterung

PHP implementiert IP-Black- und Whitelist-Filterung

巴扎黑
Freigeben: 2016-11-23 10:56:00
Original
1640 Leute haben es durchsucht

Die Anforderung kam von einem Betriebs- und Wartungskollegen, eine IP-Filterung für eine PHP-Datei durchzuführen. Es war unpraktisch, den Server direkt zu konfigurieren, daher war es notwendig, die IP direkt am Anfang der PHP-Datei zu filtern.
IP-Filterregeln können die folgenden Formen haben:
1. Vollständige IP-Adresse wie zum Beispiel: 192.168.0.1
2. Ein bestimmtes IP-Segment wie zum Beispiel: 192.168.0.*.
Betrieb und Wartung können die IP-Black- und Whitelist anpassen, die aus mehreren IP-Filterregeln besteht und in einem Array gespeichert ist. Durch das Schreiben von Code wird die IP-Black- und Whitelist-Funktion implementiert. Eine relativ einfache Anforderung.
Implementieren Sie zunächst eine Funktion. Die Funktion besteht darin, festzustellen, ob die IP mit einer IP-Filterregel übereinstimmt:

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;
   
}
Nach dem Login kopieren

Nach der Implementierung der Kernfunktion ip_test ist der folgende Prozess viel einfacher, er ist nichts weiter als Eine einfache Durchquerung: Bestimmen Sie für jede Regel in der Liste, ob die aktuell verbundene IP der Regel entspricht, und führen Sie die entsprechenden Schritte aus.
Whitelist, führt weiterhin Vorgänge aus, wenn die IP mindestens eine Regel erfüllt.
Auf diese Weise wird eine einfache, in PHP implementierte IP-Schwarz- und Whitelist-Filterung abgeschlossen. Dieser Blog richtet sich hauptsächlich an diejenigen, deren Hauptgeschäft nicht die Entwicklung ist, z. B. technischer Support, Betrieb und Wartung usw. Da es zu einfach war, wollte ich es zunächst nicht schreiben. Später bedankte sich der Kollege für meine Hilfe und erzählte mir, dass er schon lange im Internet danach gesucht, aber keine passende Lösung gefunden habe . Ich dachte, dass das vielleicht jemand wirklich braucht.

 $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');
Nach dem Login kopieren

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage