WZHU's BLOG
HEAD
- 有一种精神,叫"公诚勤朴"
Recent Posts
- 导出Gmail通讯录(Export Gmail Contacts)
- Subversion 强制用户写备注(日志)才能提交.
- Linux 时间服务器同步命令
- PHP修改 LDAP用户密码程序
- Subversion安装与配置
- 我的Subversion使用LDAP认证之Apache配置实例
- HTTP协议(RFC2616)中的方法定义
- 我的HTTP Client 模拟PHP Class
- 我所使用的PHP图形验证码程序.
- DNS Bind9 配置实例
- (联合早报)中国社会信任的解体及其结果(转)
- Linux+Apache+MySQL+PHP 安装配置(三)——freeType,libpng,jpeg,gd,mcrypt,mhash,imap,PHP安装
- Linux+Apache+MySQL+PHP 安装配置(二)—— Apache安装
- Linux+Apache+MySQL+PHP 安装配置(一)—— MySQL安装
- 甲型H1N1流感防病要诀!
Recent Comments
挣点外快
浏览器GZIP解压缩炸弹(图)
作者: wzhu 时间: 2008-11-14 13:58:39
原理:
现在的主流浏览器一般都支持Gzip格式文件解压缩,所以解压缩炸弹正式利用浏览器的这一功能实现.
具体处理流程如下:
- 我们创建一个a.txt文件.该文件的内容全部为"0", 你也可以设置为其他任意字符,但是要保证文件的内容全部由这个字符填充,其目的在于尽可能的提高下一步的压缩比.
- 将a.txt文件使用Gzip格式压缩,至于压缩级别,经过我测试,压缩的后的文件其实一样大. 不过这里也有一个问题,那就是如果你采用的压缩比越大,那么将耗费更多的CPU处理压缩,同样在用户的浏览器接受这个炸弹的时候也会耗费更多的CPU解压缩^_^
- 使用PHP文件读取压缩后的文件, 发送给用户----注意: 在发送前一定要记得发送一个Content-Encoding: gzip的协议头,告诉用户的浏览器,这个内容是需要解压缩后显示的.
图示过程:

PHP脚本:
php的脚本也非常简单,代码如下:
<?php
header('Content-Encoding: gzip');
$str = file_get_contents('a.txt.gz');
print $str;
header('Content-Encoding: gzip');
$str = file_get_contents('a.txt.gz');
print $str;
测试结果:
理论上这个经过压缩后的在服务器上不到1MB的文件,只占用1MB的带宽, 但是将会占用用户至少500MB的内存.
经过本人测试: 内存直接飙升到1.3个G, CPU直接100%,这个时候浏览器基本上已经Over了 ^_^
相关评论
- frank 发布于 2008-11-14 19:57:39 IP: 218.24.166.*
- 我还在咒骂IE呢,原来是你搞的鬼
- jake 发布于 2009-11-03 10:34:23 IP: 113.90.34.*
- 呵呵
不错,测试下
幸好我的机子性能还可以,不然就铁定硬重启了!~~~~