外链图片也有风险吗?

标签: 外链 图片 风险 | 发表时间:2012-08-15 16:23 | 作者:EtherDream
出处:http://www.cnblogs.com/index-html/

  一直以来,各大论坛和邮箱都允许使用外链图片。一方面解决了上传和保存带来的资源消耗,更重要的是方便用户转载图片。

  然而,简单的背后是否暗藏着什么风险呢?大多或许认为,不就是插入了一张外部图片而已,又不是什么脚本或插件,能有多大的安全隐患。

  曾经也有过外链图片泄漏cookie那样的重大隐患,不过那都是很久以前的事了。在如今浏览器日新月异的年代里,这样的bug已经很难遇到了。不过利用正常的游戏规则,我们仍能玩出一些安全上的小花招。

No.1 —— HTTP401 

   (严重程度:低)

  大家都见过,打开路由器的时候会弹出个登录框。

  

  

  如果了解HTTP协议的话,这是服务器返回401,要求用户名密码认证。

  不过,如果是一个图片的请求,返回401又会怎样呢?很简单,我们就用路由器的URL测试下:

<img src="http://192.168.1.1/">

  

  居然依旧跳出了一个对话框!

  如果将一个HTTP401的图片插入到论坛里,是不是也会如此呢?我们用ASP写个简单的脚本,并且能自定义提示文字:

<%Response.Status = "401"Response.AddHeader "WWW-Authenticate", "Basic realm=IP IC IQ卡,统统告诉我密码!"%>

  然后将URL插入到论坛或空间(如果拒绝.asp结尾的url图片,那就在后面加上个?.png)。

  先在QQ空间里测试下:

  

 

  不出所料,弹出了对话框。不过在ie外的浏览器下,汉字成了乱码,即使设置了ASP以及HTTP的编码也不管用。

  我们只好换成英文字符,再百度贴吧里用各种浏览器测试下:

   ie678:

    


  ie9:

    


  firefox:

    


  safari:

    

  
  除了Opera和Chrome没有弹出来,其他的浏览器都出现。不过部分浏览器截断了空格后的字符。

  当然,你也可以扩展这个功能,记录用户输入了什么内容。不过,估计也没有那个傻子会在这里输入帐号,所以这招也没多大的实用性。

  因为是强制弹出的,往往给人一惊,所以在论坛,贴吧或空间里,倒是可以娱乐娱乐。

  

No.2 ———— GZip压缩炸弹

   ( 严重程序:中)

  在之前的一篇文章里,谈到使用两次deflate压缩,将数百兆的图片文件压缩到几百字节。
   http://www.cnblogs.com/index-html/archive/2012/06/22/2558469.html

 

  原理很简单,大量重复数据有很高的压缩率。之前不清楚的deflate算法的最大压缩率有多少,一直不敢确定是不是最优的。后来大致了解了下算法,由于受到lz77算法的最大匹配长度限制,deflate的最大压缩率确实只有1:1000多点。虽然和rar相比相差甚远,不过1000倍也意味着,1M的数据可以翻到1G了。

  所以我们可以利用一个超高的压缩的HTTP报文,做几件事:
  1.消耗内存
  2.消耗CPU
  3.消耗缓存

  对于现在的硬件配置,内存已经足够支撑浏览器,多核的CPU也没法完全耗尽,唯独硬盘是个瓶颈。

  我们用C程序创建个1G的内存数组,将图片数据放在其首,后面用'\0'填充。然后使用zlib进行压缩,得到1M左右的结果,保存为x.jpg.gz

  接着用ASP读取压缩文件,并给返回的头部加上 Content-Encoding字段。

  简单的测试下:

Dim streamSet stream = Server.CreateObject("ADODB.Stream")With stream    .Type = 1    .Open    .LoadFromFile _        Server.MapPath(Request.QueryString("File") & ".gz")End WithDim agentagent = Request.Servervariables("HTTP_USER_AGENT")With Response    If Instr(agent, "Firefox") > 0 Or Instr(agent, "AppleWebKit") > 0 Then        .AddHeader "Content-Encoding", "deflate"    Else        .AddHeader "Content-Encoding", "gzip"        End If    .AddHeader "Content-Length", stream.Size    .BinaryWrite stream.ReadEnd With

 

  由于部分浏览器的 Content-Encoding只支持 deflate.所以特意做了判断,以免失效。

  先用ie测试。打开 GZip.ASP?file=x.jpg(测试地址: http://www.etherdream.com/Test/bomb.html),正常显示出图片,紧接着硬盘灯狂闪。。。关闭网页之后,打开浏览器缓存文件夹。果然,1G大小缓存已产生!

  

  

  接着用火狐测试。不过没等图片出来,浏览器已经卡死了。等了数分钟仍然没有响应,只得结束任务。

  

  

  用Chrome测试。内存暴涨,最终图片倒是正常显示出来了,不过页面经常崩溃。

  

  

  Opera一切正常,也没产生特别大的缓存文件。当然,不同版本的浏览器大不相同,可以自己测试。

  不过,几个最常用的浏览器有效果就行了。

  我们可以将图片插入到邮件里,或论坛贴图,如果不幸被火狐用户点中,那将当场炸死;webkit内核的浏览器则严重拖慢了系统速度;最杯具当属ie用户了,不知不觉被吞走了1G的硬盘空间,如果插入多个的话则更多倍,只要url参数不同!如果配合HTTP重定向,定向到带有随机参数的url,那么每次访问页面又会加载并缓存一次!

  

No.3 ———— 收邮件时暴露IP

   (严重程序:高)

  这一招其实没有任何技术含量,也不是什么BUG,连缺陷也算不上。仅仅是一种小技巧而已。

  既然网页里的图片可以外链,那就意味着可以访问任何服务器,包括我们自己的。在服务器上稍作记录,就可以轻易获得访问者的ip。

  这对于论坛来说没多大意义。因为论坛里面访客众多,很难知道哪个ip是谁的。但 电子邮件就不一样了,很少会有其他人来用你的邮箱。

  当我们向某个人发送一封邮件,里面有个不起眼的图片,外链到我们的cgi程序上。当他打开邮件时,cgi程序接收到了他的请求,自然也就探测到了ip。为了防止图不裂开,返回一个微小的图片,以防发现破绽。

  对于QQ邮件这类有推送提示的邮箱,对方很快就会打开邮件,尤其是写一个比较真实的邮件标题。

  利用这点,我们可以写个邮件群发的脚本,向多个QQ发送探测邮件。我们把每个email对应图片的url里带上唯一参数,以区分不同的邮箱。

  不出一时半日,当接收者陆续打开邮件,他们的ip也随之暴露。即使用代理上网,也能通过HTTP的 HTTP_X_FORWARDED_FOR字段获得真实ip地址。

  通过ip地理定位,很快就可以知道他们最近在哪里。如果有相同的ip,说不定他们正在一个内网里呢:)

 

防范措施

  因为图片保存在外部,所以完全不在自己的可控范围里。即使用户外链的是合法的图片,也只能意味的是当前,而不是以后,因为用户可以更新外链的内容,甚至可以针对不同的ip返回不同的内容。因此要完全防住,只能在客户端上分析图片的内容,后台最多起到辅助作用。

  在目前版本的百度贴吧里,因为图片会显示在贴吧的主页面上,所以对外链的安全性已极大的增强。当用户使用外链的形式插入图片时,后台服务器会不定期的检查图片的合法性,如果存在异常则会删除此图片。如果同样的站点出现多次异常情况,则会进入黑名单。虽然仍有部分疏漏,但相比没有要好的多。对于空间相册,或者可信站点的图片,则不会反复的扫描检测。

  类似的,像微博这类传播性极强的应用,则完全不能使用外链。即使需要,也是由代理服务器读取,再返回给用户,因此就从根本上排除了安全隐患。

本文链接

相关 [外链 图片 风险] 推荐:

外链图片也有风险吗?

- - 博客园_EtherDream の 原创空间
  一直以来,各大论坛和邮箱都允许使用外链图片. 一方面解决了上传和保存带来的资源消耗,更重要的是方便用户转载图片.   然而,简单的背后是否暗藏着什么风险呢. 大多或许认为,不就是插入了一张外部图片而已,又不是什么脚本或插件,能有多大的安全隐患.   曾经也有过外链图片泄漏cookie那样的重大隐患,不过那都是很久以前的事了.

HotIMG无限容量图片外链空间

- tormc - 启光博客
  HotIMG的图片外链与上文Yunfile外链方式有些相似,只是Yunfile偏中的是网盘资源下载类,图片功能还在测试阶段,而HotIMG提供专业的图片服务.   如果Google下HotIMG会发现很多文章中提到过,大都是教大家如何利用HotIMG发布图片赚钱,而我更看中的是它的图片外链功能.

创业风险面面观

- Vincent - FT中文网_英国《金融时报》(Financial Times)
这是每一个想创业的人必须回答的终极问题. 在你开始创业之前,请认真思考一下,自己是否真的具备创业的决心和迫切欲望. 因为在生活中,荣耀的代价向来不菲,而在这个特殊的竞技场上,对于大多数人而言,代价可能更为高昂. 毕竟,当你不惜一切代价投身事业之时,“一切代价”不只是说说而已——它很可能成为现实. 你不能简单地仅以自己的资金来衡量创业的风险.

单面煎蛋,拿风险换美味

- ZX - 谣言粉碎机 - 果壳网
流言: 单面煎鸡蛋无法彻底杀死蛋内的残留细菌,容易引起恶心、呕吐和腹泻等中毒现象. 除此之外,生蛋白还会阻碍身体吸引维生素H,如严重的话,会导致皮疹、皮肤炎、脱发等状况. 真相: 鸡蛋是一种比较容易受到细菌污染的食品. 如果母鸡完全健康,刚刚下的鸡蛋中倒也不会有过多细菌. 不过,这种理想情况毕竟不大可靠,通常的母鸡体内可能会有一些致病细菌.

Godaddy的域名注册风险分析

- 0M - 月光博客
  据南方都市报的报道,国内知名的电影资料库网站时光网被关的原因终于有了答案,时光网关闭据称与涉黄有关,万网的工作人员称,万网是接北京市通信管理局的通知,称时光网“传播色情、淫秽”,因而停止了对该域名的解析,该工作人员还说,该通知并没有明确恢复解析的期限,“如果想恢复,必须找北京市通信管理局或者工信部.

使用ifttt背后的巨大风险

- Jack - 月光博客
  ifttt,是一个新生的网络服务平台,通过不同其他平台的条件来决定是否执行下一条命令. ifttt基于任务的条件触发,类似编程语言,让用户可以根据他们设计的流程设计一些小程序,让网络服务能够对某些行为作出反应.   ifttt 是一项创造性的应用,但是我和我的朋友们必须重视其背后隐藏的风险. this 称为 trigger,而 that 称为 action.

单面煎蛋,拿风险换美味

- Pony - 牛博国际
      许多人喜欢吃只煎一面的蛋. 对他们来说,尚未完全凝固的鸡蛋白与“溏心”的蛋黄实在是美味. 但如此烹饪出的鸡蛋,对健康是有风险的. 流言: 单面煎鸡蛋无法彻底杀死蛋内的残留细菌,容易引起恶心、呕吐和腹泻等中毒现象. 除此之外,生蛋白还会阻碍身体吸引维生素H,如严重的话,会导致皮疹、皮肤炎、脱发等状况.

生产分工与风险分工

- 肖 - 辉格
我在《金融对赌不是无价值交易》里分析了衍生品的风险配置功能,如何使得包含复杂风险的生意得以展开,从而推高整个经济水平;从我得到的一些反馈看来,许多朋友没能理解这一分析,或许通过类比和例子能够看的更清楚. 说到生产分工,一般想到的是效率改进和相应的成本节省,即,每个生产者若专注于某一工序,不断重复,会更加熟练高效;这没错,不过生产分工有另一个常被忽视但或许更加重要的效果:它拓展了生产的可能性,即,使得许多原本不可能的生产成为可能.

马云的风险更大了

- 辉 - 叶檀的BLOG
2011-6-21 每日经济新闻.     转型期的市场中经济中,最怕的是有人在市场的混沌中挑开潜规则,而挑开的目的表面是为了法律公义,实际上是为了自身的利益.     马云的“彻底守法”使许多采用协议控制(VIE)方式进行内外资合作的公司变得不守法、不合法. 所谓VIE,又称“新浪模式”、“搜狐模式”,主要应用于互联网公司的境外私募与境外上市,指离岸公司通过外商独资企业,与内资公司签订一系列协议来成为内资公司业务的实际收益人和资产控制人,以规避《外商投资产业指导目录》对于限制类和禁止类行业限制外资进入的规定.

Groupon 面临严重倒闭风险

- Dexter.Yy - 36氪
我已经公开讲过很多次了,我不喜欢「消灭价值」的商业模式. 身为创业者,你应该要致力于创造价值,而不是消灭它. 但是要卖得比竞争对手贵,生意还比对方好,那只有大师如 Steve Jobs、张忠谋(台积电董事长)先生才做得到. 也因为这样,我不喜欢 Groupon 的商业模式. 那也就算了,因为他们至少成功创造了一家「了不起」的网络公司,虽然让上万家餐厅老板亏了不少钱,但至少他们成就了自己,也成就了公司、股东,即将风光的上市,写下完美的结局,不是吗.