ホームページ >バックエンド開発 >PHPチュートリアル >Web サイトがユーザー IP を取得する安全な方法 HTTP_X_FORWARDED_FOR Inspection_PHP チュートリアル

Web サイトがユーザー IP を取得する安全な方法 HTTP_X_FORWARDED_FOR Inspection_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:10:37959ブラウズ

セキュリティフィルターされたgetIP関数

コードをコピーします コードは次のとおりです:

function getIP() {
$realip = ''; //デフォルト値を設定します
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$realip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$realip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$realip = $ _SERVER['REMOTE_ADDR' ];
}

preg_match('/^((?:d{1,3}.){3}d{1,3})/',$realip,$match);
return $match?$match[0]:false ;
}

上記関数はIP判定を追加し、IP形式で始まるデータと、最初にIP形式の値を満たしたデータのみを読み込みます。そうでない場合は false を返します。 このようにして、フォーマットを満たす IP を読み取ることができ、データの IP フォーマットが検証されます。

インターネットの IP、ユーザーの受信 LAN の IP を読み取る場合は、それを直接フィルタリングする必要があります

一部の Web サイトでは、不正な IP アドレスが実際には IP アドレス形式エラーの一部であり、その一部は IP アドレスが読み取られ、インターネットで許可されている IP 形式を満たしていない可能性があるというプロンプトをよく見かけます。 次の関数は、IANA サイト仕様を通じて関数をカプセル化します。 IPアドレスを入力すると、そのIPがインターネット上で利用できるかどうかを正確に知ることができます。

コードをコピーします コードは次のとおりです:

//インターネットではIPアドレスの使用が許可されています
function ipType2($ip) {
$iplist =explode(".", $ip);

if ($iplist[0] >= 224 && $iplist[0] <= 239)
return 'マルチキャスト';
if ($iplist[0] >= 240 && $iplist[0] < = 255)
「保持」を返す;

if (preg_match('/^198.51.100/', $ip))
return 'TEST-NET-2、ドキュメントと例';
if (preg_match('/^203.0.113/', $ip))
'TEST-NET-3、ドキュメントと例' を返します;

if (preg_match('/^192.(18|19)./', $ip))
return 'ネットワーク ベンチマーク テスト';

if (preg_match('/^192.168/', $ip))
return 'プライベート ネットワーク [イントラネット]';

if (preg_match('/^192.88.99/', $ip))
return 'ipv6to4 リレー';
if (preg_match('/^192.0.2./', $ip))
return 'TEST-NET -1、ドキュメントと例';
if (preg_match('/^192.0.0./', $ip))
return '予約済み (IANA)';
if (preg_match('/^192.0.0./ ' 、$ip))
return '予約済み (IANA)';

if ($iplist[0] == 172 && $iplist[1] <= 31 && $iplist[1] >= 16)
return 'プライベート ネットワーク [イントラネット]';

if ($iplist[0] == 169 && $iplist[1] == 254)
return 'リンクローカル';
if ($iplist[0] == 127)
return 'ループバックアドレス';
if ( $iplist[0] == 10)
return 'プライベート ネットワーク [イントラネット]';
if ($iplist[0] == 0)
return 'このネットワーク (送信元アドレスとしてのみ有効)';

「インターネットアドレス」を返します;
}

IP アドレスを入力して「'インターネット アドレス'」が返された場合、この IP アドレスは正しい形式であるだけでなく、インターネット上の合法的な IP アドレスでもあります。この機能は非常に複雑で、実際には多くの非インターネット アドレスが除外されます。 -インターネット IP アドレス 192、127、10 で始まる一般的なアドレスはおそらくよく知られていますが、実際には、上記の 2 つの機能を使用すると、正しい形式を読み取ることができるだけではありません。 . IP アドレスはインターネット上の IP アドレスであることも保証できます。

著者: chengmo QQ:8292669

http://www.bkjia.com/PHPjc/327101.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/327101.html技術記事セキュリティ フィルタリングされた getIP 関数のコピー コードは次のとおりです。 function getIP() { $realip = '' //デフォルト値を設定します if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $realip = $_SERVER['HTTP_ ..
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。