インターネット上で Curl を使用してクライアントのソース IP を偽装する方法をたくさん見つけました。その後、この機能を使用した結果を検証しました。 これは強力です。クライアントのソース IP だけでなく、プロキシ IP も偽造できます。以下のコードを見てみましょう。
一般に、サーバーがクライアントの IP を取得する場合は 3 つの状況があります
1. プロキシを使用しない場合:
#http://www.bKjia.c0m
REMOTE_ADDR=顧客IP
HTTP_VIA = 空
HTTP_X_FORWARDED_FOR = 空
2. プロキシを使用し、プロキシ サーバーがクライアント IP を転送するように設定されている場合:
REMOTE_ADDR = プロキシサーバーのIP
HTTP_VIA = プロキシサーバーのIP
HTTP_X_FORWARDED_FOR = 顧客 IP
HTTP_VIA および HTTP_X_FORWARDED_FOR の値は、ヘッダー ヘッダーを追加することでカスタマイズでき、サービス
の場合、これを通じてクライアント IP を非表示にすることができます。X_FORWARDED_FOR はサーバー側で有効になっています。
効果をテストし、サーバー側で新しい PHP プログラムを作成します:
1.php は、index.php をリクエストします。
1.phpコード:
コードは次のとおりです | コードをコピー |
$ch =curl_init();
curl_setopt($ch, CURLOPT_REFERER, "http://www.bKjia.c0m/ "); //構築元 |
2.phpのコードは以下の通りです
コードをコピー | |
関数 getClientIp() { If (!empty($_SERVER["HTTP_CLIENT_IP"])) $ip = $_SERVER["HTTP_CLIENT_IP"]; else if (!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) $ip = $_SERVER["HTTP_X_FORWARDED_FOR"]; else if (!empty($_SERVER["REMOTE_ADDR"])) $ip = $_SERVER["REMOTE_ADDR"]; それ以外 $ip = "エラー"; $ip を返します; } echo "IP: " . getClientIp() . echo "リファラー: " . $_SERVER["HTTP_REFERER"];
| 偽造は成功しました。これは、「チケットを偽造」する友人に適切な IP 変更ソリューションを提供しますか? !
結果:
HTTP/1.1 200 OK 日付: Wed, 03 Apr 2013 06:20:42 GMT サーバー: Apache/2.2.22 (Win32) PHP/5.3.13
X-Powered-By: PHP/5.3.13 Content-Length: 44 Content-Type: text/html
IP: 8.8.8.8
curl関数については以下を参照してください
curl関連機能一覧: curl_init — CURL セッションを初期化します
curl_setopt — CURL 呼び出しのオプションを設定します
curl_exec — CURL セッションを実行します
curl_close — CURL セッションを閉じる
curl_version — 現在の CURL バージョンを返します
1>curl_init — CURL セッションを初期化します