ホームページ > バックエンド開発 > PHPチュートリアル > PHP での HTTP_X_FORWARDED_FOR と REMOTE_ADDR の使用、phpremoteaddr_PHP チュートリアル

PHP での HTTP_X_FORWARDED_FOR と REMOTE_ADDR の使用、phpremoteaddr_PHP チュートリアル

WBOY
リリース: 2016-07-12 08:51:39
オリジナル
1231 人が閲覧しました

phpでのHTTP_X_FORWARDED_FORとREMOTE_ADDRの使用、phpremoteaddrでのHTTP_X_FORWARDED_FORとREMOTE_ADDRの使用

php

1.REMOTE_ADDR: 現在のページを閲覧しているユーザーのコンピューターの IP アドレス
2.HTTP_X_FORWARDED_FOR: 現在のページを閲覧しているユーザーのコンピューターのゲートウェイ
3.HTTP_CLIENT_IP: クライアントの IP

PHP で $_SERVER["REMOTE_ADDR"] を使用してクライアントの IP アドレスを取得しますが、クライアントがプロキシ サーバーを使用してアクセスする場合、取得されるのはプロキシ サーバーの IP アドレスであり、実際のクライアントの IP アドレスではありません。プロキシ サーバー経由でクライアントの実際の IP アドレスを取得するには、$_SERVER["HTTP_X_FORWARDED_FOR"] を使用して読み取ります。

ただし、すべてのプロキシ サーバーが $_SERVER["HTTP_X_FORWARDED_FOR"] を使用してクライアントの実際の IP を読み取ることができるわけではないことに注意してください。このメソッドで読み取られる IP の一部は、依然としてプロキシ サーバーの IP です。

もう 1 つの注意点は、クライアントがプロキシ サーバー経由でアクセスしない場合、$_SERVER["HTTP_X_FORWARDED_FOR"] で取得される値は空になることです。

if ($_SERVER['HTTP_X_FORWARDED_FOR'] && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/',$_SERVER[' HTTP_X_FORWARDED_FOR'])) {
$onlineip = $_SERVER['HTTP_X_FORWARDED_FOR']
} elseif ($_SERVER['HTTP_CLIENT_IP'] && preg_match('/^([0-9]{1,3}.){3 }[0-9]{1,3}$/',$_SERVER['HTTP_CLIENT_IP'])) {
$onlineip = $_SERVER['HTTP_CLIENT_IP']
}

;

ユーザーの IP アドレスの 3 つの属性 (HTTP_X_FORWARDED_FOR、HTTP_VIA、REMOTE_ADDR) の違いを取得します。

1. プロキシサーバーを使用しない場合:

REMOTE_ADDR = あなたのIP
HTTP_VIA = 値がないか、表示されません
HTTP_X_FORWARDED_FOR = 値がないか、表示されません

2. 透過的プロキシサーバーの使用: 透過的プロキシ

REMOTE_ADDR = 最後のプロキシ サーバーの IP
HTTP_VIA = プロキシ サーバーの IP
HTTP_X_FORWARDED_FOR = 複数のプロキシ サーバーを経由する場合、この値は次のようになります: 203.98.182.163、203.98.182.163、203.129.72.215。

このタイプのプロキシ サーバーは依然としてあなたの情報を訪問者に転送するため、あなたの本当の身元を隠すという目的を達成することはできません。

3. 通常の匿名プロキシサーバーを使用する状況: 匿名プロキシ

REMOTE_ADDR = 最後のプロキシ サーバー IP
HTTP_VIA = プロキシ サーバー IP
HTTP_X_FORWARDED_FOR = プロキシ サーバー IP 複数のプロキシ サーバーを経由する場合、この値は次のようになります: 203.98.182.163、203.98.182.163、203.129.72.215。

実際の IP を隠しますが、訪問者にはプロキシ サーバーを使用してアクセスしていることを明らかにします。

4. 欺瞞的なプロキシサーバーの使用: プロキシを歪める

REMOTE_ADDR = プロキシ サーバーの IP
HTTP_VIA = プロキシ サーバーの IP
HTTP_X_FORWARDED_FOR = 複数のプロキシ サーバーを経由する場合、この値は次のようになります: 203.98.182.163、203.129.72.215。

訪問者に、プロキシ サーバーを使用していることを伝えますが、実際の IP の代わりに偽のランダム IP を作成してなりすまします。

5. 高匿名性プロキシ サーバーの使用: 高匿名性プロキシ (エリート プロキシ)

REMOTE_ADDR = プロキシ サーバーの IP
HTTP_VIA = 値がないか、表示されません。
HTTP_X_FORWARDED_FOR = 値がないか、表示されません。 複数のプロキシ サーバーを経由する場合、この値は次のようになります: 203.98.182.163、203.98.182.163、203.129.72.215。

プロキシ サーバーを使用してオブジェクトに直接アクセスしているのと同じように、すべての情報をプロキシ サーバーの情報で完全に置き換えます

記事転載元: http://www.cnblogs.com/andhm/archive/2010/12/18/1910030.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/1129141.html技術記事 PHP での HTTP_X_FORWARDED_FOR と REMOTE_ADDR の使用、phpremoteaddr での HTTP_X_FORWARDED_FOR と REMOTE_ADDR の使用 1. REMOTE_ADDR: 現在のページを閲覧しているユーザーのコンピューターの IP アドレス...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート