首页 » Network » Network-else » 正文

简谈X-Forwarded-For的一些事

X-Forwarded-For(XFF)是HTTP请求头字段之一。
格式:X-Forwarded-For: client1, proxy1, proxy2, proxy3
只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项。
请求从client1发出,XFF为空,再到从proxy1发出,请求里XFF就添加了client1,再从proxy2发出,请求里XFF就添加了proxy1,再到proxy3,再从proxy3发出,请求里XFF就添加了proxy2,注意这里porxy3不会添加到XFF,因为proxy3就是在tcp包的源IP。
一些程序如C#和php获取客户端IP会这样写:
C#:string client1 = Request.ServerVariables[“HTTP_X_FORWARDED_FOR”];
PHP:
getenv(‘HTTP_X_FORWARDED_FOR’)
看起来好像很正常,但是X-Forwarded-For是可以被伪造的(如刷票之类),只需在请求头中添加即可,如
C#:
request.Headers.Add(“X_FORWARDED_FOR”, “6.6.6.6”);
PHP:
$headers = array(
‘X-Forwarded-For:’.6.6.6.6,
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
 
Python:
Header = {
‘X-Forwarded-For’: ‘6.6.6.6’,
}

Comment

please input captcha *