Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1198952
  • 博文数量: 272
  • 博客积分: 3899
  • 博客等级: 中校
  • 技术积分: 4734
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-15 14:53
文章分类

全部博文(272)

文章存档

2012年(272)

分类: 网络与安全

2012-06-26 17:07:47

我之前曾写过一篇文章:

Data URL Schema 与 如何盗链百度的图片

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

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

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

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

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

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

参考如下例子:
<script>
window.sc="";
script>
<iframe src="javascript:parent.sc">iframe>

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

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

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

secinn中新的代码如下:

<script>var im_2971a6649dfbd861bd7d04df14543c06 = "src= >";script>
<iframe id=im_2971a6649dfbd861bd7d04df14543c06 style="border:0px;overflow:hidden;"
scrolling
="no" frameborder="0" src="javascript:parent.im_2971a6649dfbd861bd7d04df14543c06;"
onload
="javascript:var x=document.getElementById('im_2971a6649dfbd861bd7d04df14543c06').contentWindow.document.images[0];
this.width=x.width+10;this.height=x.height+10;"
>iframe>
其中出于用户体验的因素在iframe onload的过程中,根据加载图片的大小修改了iframe本身的长宽。

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



出于尊重原始数据的原因,仅在planet的在线访问上增加了该功能,镜像功能和rss中未进行此类修改。

欢迎访问 ,获得最新的体验。

PS: 我们的Webzine 04 将于下周在 SecINN 发布,敬请期待!
阅读(1456) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~