轻松搞定网站防盗链

  • A+
所属分类:lcx

提到可以采用新出的 Data URL Schema ,以不发送referer的形式,绕过百度的referer检验。但这种方式只有FF支持,IE还不支持,所以尚未采用。这些天来SECINN深受百度图 片防盗链之苦,用户体验有折扣,所以我决定一劳永逸的解决这个问题。

实际上浏览器是根据schema 来决定是否发送 referer的。

典型的就是从 https 跳到 http 会被浏览器拒绝发送 referer,因为可能会导致敏感信息泄露。

比较通用绕过referer检查的方式还有通过一些网页代理访问,原理也是代理访问时不发送referer,或者伪造referer。

但是出于法律风险,我不想提供我的网页代理(也不希望用验证域名的方式让代理变得复杂),也不想使用第三方的代理。

前些天,harry给我提供了一种非常猥琐但极其通用的方式绕过浏览器检查。

参考如下例子:

我也没想明白为啥iframe会直接把那段img标签给插入其内容中,但是浏览器确实这样做了!

由于src的schema是 "javascript“,所以后面的这个image请求是不发送referer的!

出于这个原理,我们就可以绕过一切基于Referer 的防盗链检测了。

secinn中新的代码如下:

其中出于用户体验的因素在iframe onload的过程中,根据加载图片的大小修改了iframe本身的长宽。

so,向可怜的百度 hiphotos的防盗链图片说bye bybe吧!

下面是上一篇文章

在 Firefox 中有实现,IE不支持。Opera , Safari 参考的 Firefox 的实现

利用 Data:xxxxxxx 可以写各种不同的内容,甚至能够通过base64嵌入二进制的图片到URL里。

比如,要构造XSS,可以这样:

test

会弹出个小框。

我经过测试,构造了以下方式可以成功实现不发送Referer的需求

base64 加密的部分实际上就是

可以查看一下新开iframe的域,使用以下的测试方式

在iframe中弹出document.domain,可以看到当前的域还是在 www.a.com

说到这里,就要插两句关于 Firefox 的同源判断和Referer 发送规则了。

一般来说, Firefox 会根据当前的JSContext来寻找当前页面的源,doc->GetPrincipal();

发送的 Referer 头的内容,就是获取的页面源。

在 Firefox 中,点击一个link,或者 ,

这样看来,利用 Data URL Schema 构造一个新的语境,再执行一个访问的请求,就不会发送 Referer, 应该属于一个浏览器的缺陷。要说是 Feature 也可以,又是有争议的地方啊。


摘自:http://hi.baidu.com/yanfei_nn/item/8ece8c18fc78431de75c363f

文章来源于lcx.cc:轻松搞定网站防盗链

相关推荐: 常见验证码的弱点与验证码识别

2013/06/08 11:36 | insight-labs 0x00 简介 验证码作为一种辅助安全手段在Web安全中有着特殊的地位,验证码安全和web应用中的众多漏洞相比似乎微不足道,但是千里之堤毁于蚁穴,有些时候如果能绕过验证码,则可以把手动变为自动,对…

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: