题目:老师告诉小宁其实xff和referer是可以伪造的
抓包,(我用的burp),然后按照提示依次插入xff和referer词条,如下:
相关知识:
xff: X-Forwarded-For
X-Forwarded-For (XFF) 在客户端访问服务器的过程中如果需要经过HTTP代理或者负载均衡服务器,可以被用来获取最初发起请求的客户端的IP地址,这个消息首部成为事实上的标准。在消息流从客户端流向服务器的过程中被拦截的情况下,服务器端的访问日志只能记录代理服务器或者负载均衡服务器的IP地址。如果想要获得最初发起请求的客户端的IP地址的话,那么 X-Forwarded-For 就派上了用场。
这个消息首部会被用来进行调试和统计,以及生成基于位置的定制化内容,按照设计的目的,它会暴露一定的隐私和敏感信息,比如客户端的IP地址。所以在应用此消息首部的时候,需要将用户的隐私问题考虑在内。
HTTP 协议中的 Forwarded 是这个消息首部的标准化版本。
X-Forwarded-For 也是一个电子邮件相关协议中用到的首部,用来表示一封电子邮件是从其他账户转发过来的。
Header type Request header
Forbidden header name no
语法
X-Forwarded-For: <client>,<proxy1>, <proxy2>
指令
<client>
客户端的IP地址。
<proxy1>, <proxy2>
如果一个请求经过了多个代理服务器,那么每一个代理服务器的IP地址都会被依次记录在内。也就是说,最右端的IP地址表示最近通过的代理服务器,而最左端的IP地址表示最初发起请求的客户端的IP地址。
Referer
Referer 请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用 Referer 请求头识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。
需要注意的是 referer 实际上是 “referrer” 误拼写。参见 HTTP referer on Wikipedia (HTTP referer 在维基百科上的条目)来获取更详细的信息。
Referer 请求头可能暴露用户的浏览历史,涉及到用户的隐私问题。
在以下两种情况下,Referer 不会被发送:
来源页面采用的协议为表示本地文件的 “file” 或者 “data” URI;
当前请求页面采用的是非安全协议,而来源页面采用的是安全协议(HTTPS)。
语法
Referer: <url>
指令
<url>
当前页面被链接而至的前一页面的绝对路径或者相对路径。不包含 URL fragments (例如 “#section”) 和 userinfo (例如 “https://username:password@example.com/foo/bar/” 中的 “username:password” )。
示例:Referer: https://developer.mozilla.org/en-US/docs/Web/JavaScript`