该代码是在某网站上看到的,关键部分为其中的js code中引入的一个函数,为html5中引入的。无论是在pc端或是移动端的浏览器上打开,会进行一个N次循环,最终将硬件资源耗尽。代码如下:



<img src="https://blog.361way.com/wp-content/uploads/2016/01/jscode.png" width="541" height="343" alt="" />



上图为国外的某哥们在推特上的发文内容。我在自己的站点上保存该代码并通过浏览器打开后发现效果如下。主机资源使用率如下:



<img src="https://blog.361way.com/wp-content/uploads/2016/01/wintop.png" width="377" height="201" alt="" />



可以发现CPU立即飙了上去,内存也占用很多。将主机强制关机并开机后,查看浏览器的历史记录如下(这里只取了一小部分,根据js代码中可以看到实际上会写10W条记录,但很可能写不到10W条主机已经跨掉):



<img src="https://blog.361way.com/wp-content/uploads/2016/01/browser-history.png" width="547" height="327" alt="" />



<strong>原理</strong>:history.pushstate()是HTML5引入的API,pushState将指定的URL添加到浏览器历史里,存储当前历史记录点。 当 i<100000 的时候会循环的将 total记录到浏览器历史里面,重复多了,浏览器就承受不住了,自然就崩了。



代码我已放在本站点上,想要尝试下效果的可以点击 <a href="http://dh.361way.com/demo/attack.html" target="_blank" rel="noopener">http://dh.361way.com/demo/attack.html</a>&nbsp;。



<br />