curl は強力ですが、偽造できるのは $_SERVER["HTTP_X_FORWARDED_FOR"] のみです。ほとんどの IP アドレス検出プログラムでは、$_SERVER["REMOTE_ADDR"] を偽造するのは困難です。
まずclient.phpのコードです
01
| $headers['CLIENT-IP'] = '202.103.229.40';
|
02
$headers['X-FORWARDED-FOR'] = '202.103.229.40';
|
|
05
foreach( $headers as $n => $v ) {
|
|
06070809
curl_setopt ($ch, CURLOPT_URL, "http://localhost/curl/server.php");
|
| 12
curl_setopt ($ch, CURLOPT_HTTPHEADER , $headerArr ); // IP を構築する
|
| 13
curl_setopt ($ch, CURLOPT_REFERER, "http://www.163.com/ "); //構築元
|
| 14
curl_setopt( $ch, CURLOPT_HEADER, 1);
| 18
| $out = ob_get_contents();
次にserver.php
02
| if(!emptyempty($_SERVER["HTTP_CLIENT_IP"]))
|
03
| $cip = $_SERVER["HTTP_CLIENT_IP"]
|
04
| else if(!emptyempty($_SERVER["HTTP_X_FORWARDED_FOR"]))
|
05
| $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
|
06
else if(!emptyempty($_SERVER["REMOTE_ADDR"])) |
|
07
$cip = $_SERVER["REMOTE_ADDR"] |
|
09
$cip = "取得できません!";
|
|
12 |
echo " アクセスIP: ".GetIP()." ";
|
13
| echo "アクセス元: ".$_SERVER["HTTP_REFERER"];
|
カール、PHP、ヘッダー
|