Heim > Backend-Entwicklung > PHP-Tutorial > Ausführliche Erklärung, wie man den Zugriff auf die IP-Whitelist in PHP einschränkt

Ausführliche Erklärung, wie man den Zugriff auf die IP-Whitelist in PHP einschränkt

藏色散人
Freigeben: 2023-04-08 09:32:02
nach vorne
3463 Leute haben es durchsucht

Ausführliche Erklärung, wie man den Zugriff auf die IP-Whitelist in PHP einschränkt

Wie schränkt PHP den Zugriff auf die IP-Whitelist ein?

1. Laden Sie den Code hoch

config.php

    //ip白名单配置
        'ipWlist'=>[
            'ifFilter'=>true,   //是否开启白名单功能
            'wlist'=>[
                '10.0.0.19',
            ],
            'warea1'=>'10.8.0.0/16',     //白名单网段1
            'warea2'=>'10.12.0.0/16',     //白名单网段1
        ],
Nach dem Login kopieren

commonfunc.php

private function checkIp(){
        $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
        $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
        $ipC=config('appconf.ipWlist');
        if(!$ipC['ifFilter']){
            return true;
        }
        if(in_array($user_IP, $ipC['wlist'])){
            return true;
        }
        if( ! $this->ip_in_network($user_IP, $ipC['warea1'])){
            if( ! $this->ip_in_network($user_IP, $ipC['warea2'])){
                return false;
            }
        }
        return true;
    }
    private function  ip_in_network($ip, $network)
    {
        $ip = (double) (sprintf("%u", ip2long($ip)));
        $s = explode('/', $network);
        $network_start = (double) (sprintf("%u", ip2long($s[0])));
        $network_len = pow(2, 32 - $s[1]);
        $network_end = $network_start + $network_len - 1;
        if ($ip >= $network_start && $ip <= $network_end)
        {
            return true;
        }
        return false;
    }
Nach dem Login kopieren

2. Beschreibung

2.1 So erhalten Sie eine IP

● $_SERVER["HTTP_VIA" ] Wenn ein Proxy-Server vorhanden ist, wird die IP-Adresse des Proxy-Servers angezeigt. „REMOTE_ADDR“] Die IP-Adresse des Benutzers, der die aktuelle Seite durchsucht

Im Allgemeinen haben Entwickler ein gutes Verständnis der internen Serverarchitektur und können einfach REMOTE_ADDR verwenden, da REMOTE_ADDR nicht gefälscht werden kann und sicherer ist . Die anderen beiden Felder sind nicht so zuverlässig.

2.2 Einige Kinderschuhe verwenden keine Array-Konfiguration, sondern definieren

, was durch json_encode, Serialisierung, eval() usw. wie folgt gelöst werden kann

define("IPFILTER",1);  
define(&#39;IPWLISTJSON&#39;,json_encode([&#39;127.0.0.1&#39;,]));
// 业务中
$wlist = json_decode(IPWLISTJSON,1);
define(&#39;IPWLIST&#39;,"return [&#39;127.0.0.1&#39;,];");
// 业务中
$wlist=eval(IPWLIST)
define(&#39;IPWLIST&#39;,serialize([&#39;127.0.0.1&#39;,]));
// 业务中
$wlist=unserialize(IPWLIST);
Nach dem Login kopieren

Sie können auch die Explosionsform von Zeichenfolgen, speziellen Trennzeichen usw. verwenden. Ich werde hier nicht einzeln Beispiele nennen. Weitere PHP-Kenntnisse finden Sie im

PHP-Tutorial

!

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung, wie man den Zugriff auf die IP-Whitelist in PHP einschränkt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:cnblogs.com
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