PHP での HTTP_X_FORWARDED_FOR と REMOTE_ADDR の使用、phpremoteaddr_PHP チュートリアル
Jul 12, 2016 am 08:51 AMphpでの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

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法
