JS脚本的压缩传输
时间:2010-07-21 来源:crazypeach
今天在看一些挂马的资料时,看到一种用来伪装恶意js脚本的方法,就是对脚本进行加密,然后在客户端重新解密拼装执行。
无意中突然想到,前段时间用到的一个别人写的js脚本,有两个发布版本,一个是用来学习的完整版(22KB),另一个是用来实际部署的压缩版(8K)。压缩版打开之后是满篇的乱码,确切的说应该是乱字符,虽然混乱,但使用却没有任何问题。当时还以为是JS自带的压缩功能,也没细看。今天又想起它了,于是又翻出来认真看了一下,果然,在混乱的字符后面,藏着一句"eval(ungzip(str));"。
eval(string)函数是刚刚在挂马的资料中看到的,用来执行其中字符串参数所包含的js代码,代码往前找,发现ungzip(string)是作者自己定义的一个解压字符串的函数,这样它的压缩方式就清晰了。
其实很简单,将正常的js脚本使用压缩函数压缩之后,得到一个新的短小的字符串,然后将解压的函数和字符串一起放到js代码中,浏览器在打开网页时执行函数对脚本进行解压,然后执行。减轻了网络流量的压力,客户端在性能上没有明显的消耗,很赞。
相关阅读 更多 +