最新消息:

Referer防盗链和应用和破解

IT技术 ipcpu 617浏览

Referer防盗链和应用和破解.md

一、Referrer 还是 Referer?

两种写法都对,因为前人的拼写错误typo,需要后人来买单。

二、什么是Referer?

HTTP协议规范在HTTP标头中定义了referer字段(见RFC 1945, RFC 7231),用于表示HTTP请求来源。该字段值由浏览器在发起HTTP请求时指定。该字段值代表当前HTTP请求的来源,例如在点击网页链接时,浏览器会向服务器提交一个HTTP请求,请求中HTTP标头的referer字段值为引用该资源的网页地址,即用户点击的网页地址。

三、防盗链的应用场景

盗链通常指未经源网站允许的情况下,通过超链接引用源网站内容,如图片,视频等。盗链行为会造成受害网站数据泄露以及经济损失。

由上图中可以看出,盗链过程中,盗链网站自身不提供全部网页所需内容。部分网页内容来自受害网站。
在以上过程中,受害网站实际承载盗链网站的部分业务流量和压力,而盗链网站则盗取该部分数据流量和计算资源甚至客户流量用以支撑自己的业务。受害网站则需要承担被盗取流量和计算资源所带来的运营成本,从而造成受害网站的经济损失。

为了避免这种情况,一般采用基于Referer的防盗链解决方法。通过对HTTP标头中referer字段内容进行判断,可以判断请求是正常用户发起的请求还是来自盗链网站。

referer虽好,可以有缺点,可以被伪造,有些浏览器可以控制不发送referer,我们继续往下看。

四、服务器端绕过

由于服务器上请求任何东西,都可以用编程语言拼接HTTP请求包,所以referer防盗链对于服务器来讲没有什么意义。这里也不做过多探讨。

五、浏览器端绕过

referrerPolicy是近乎完美的选择,由于存在兼容性限制,也可以通过fetch或iframe等方式来实现。我们这里只讨论referrerPolicy。
2014 年,W3C 的 Web 应用安全工作组(Web Application Security Working Group)发布了 Referrer Policy 草案,对浏览器该如何发送 Referrer 做了详细的规定。
新的 Referrer Policy,我们可以针对第三方网站隐藏 Referrer,也可以只发送来源 URL 的 host 部分。但有一点要记住,新策略允许沉默,但不允许说谎。换句话说,你有权不告诉对方请求从哪儿来,但是不允许用假来源去骗人。

浏览器对referrerPolicy的支持情况

IE:不支持(IE高版本中隐式支持default,https页面拉取的http资源不会加referrer)
Edge:仅支持较早版本的值(never、always、origin、default)
Firefox:36+
Chrome:21+
Safari:7.1+(仅支持较早版本的4个值)
Opera:15+
iOS Safari:8+(仅支持较早版本的4个值)

隐藏referer的方法

<imgsrc="http://phptest2.com/upload/1.png"  width="200"  referrerPolicy="no-referrer"   alt="">

参考资料

https://imququ.com/post/referrer-policy.html
https://juejin.cn/post/6844903892170309640
https://blog.lyz810.com/article/2016/08/referrer-policy-and-anti-leech/

转载请注明:IPCPU-网络之路 » Referer防盗链和应用和破解