发布时间:2013-01-24 19:27:26作者:知识屋
然而,简单的背后是否暗藏着什么风险呢?大多或许认为,不就是插入了一张外部图片而已,又不是什么脚本或插件,能有多大的安全隐患。
曾经也有过外链图片泄漏cookie那样的重大隐患,不过那都是很久以前的事了。在如今浏览器日新月异的年代里,这样的bug已经很难遇到了。不过利用正常的游戏规则,我们仍能玩出一些安全上的小花招。
(严重程度:低)
大家都见过,打开路由器的时候会弹出个登录框。
如果了解HTTP协议的话,这是服务器返回401,要求用户名密码认证。
不过,如果是一个图片的请求,返回401又会怎样呢?很简单,我们就用路由器的URL测试下:
<img src="http://192.168.1.1/">
居然依旧跳出了一个对话框!
如果将一个HTTP401的图片插入到论坛里,是不是也会如此呢?我们用ASP写个简单的脚本,并且能自定义提示文字:
先在QQ空间里测试下:
不出所料,弹出了对话框。不过在ie外的浏览器下,汉字成了乱码,即使设置了ASP以及HTTP的编码也不管用。
我们只好换成英文字符,再百度贴吧里用各种浏览器测试下:
ie678:
ie9:
firefox:
safari:
除了Opera和Chrome没有弹出来,其他的浏览器都出现。不过部分浏览器截断了空格后的字符。
当然,你也可以扩展这个功能,记录用户输入了什么内容。不过,估计也没有那个傻子会在这里输入帐号,所以这招也没多大的实用性。
因为是强制弹出的,往往给人一惊,所以在论坛,贴吧或空间里,倒是可以娱乐娱乐。
( 严重程序:中)
在之前的一篇文章里,谈到使用两次deflate压缩,将数百兆的图片文件压缩到几百字节。
原理很简单,大量重复数据有很高的压缩率。之前不清楚的deflate算法的最大压缩率有多少,一直不敢确定是不是最优的。后来大致了解了下算法,由于受到lz77算法的最大匹配长度限制,deflate的最大压缩率确实只有1:1000多点。虽然和rar相比相差甚远,不过1000倍也意味着,1M的数据可以翻到1G了。
所以我们可以利用一个超高的压缩的HTTP报文,做几件事:
1.消耗内存
2.消耗CPU
3.消耗缓存
对于现在的硬件配置,内存已经足够支撑浏览器,多核的CPU也没法完全耗尽,唯独硬盘是个瓶颈。
我们用C程序创建个1G的内存数组,将图片数据放在其首,后面用'