简谈X-Forwarded-For的一些事 | LSABLOG

首页 » 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