浅谈利用JavaScript攻击DDoS的原理及防御
分布式拒绝服务攻击是针对网站的最古老、最常见的攻击。尼克沙利文是网站加速和安全服务提供商CloudFlare的系统工程师。最近,他写了一篇文章,讲述攻击者如何利用恶意网站、服务器劫持和中间人攻击来发起DDoS攻击,以及如何利用HTTPS和即将推出的名为“SRI”的新Web技术来保护网站免受攻击。
现代网站中的大多数交互都来自于JavaScript。网站通过HTML元素脚本src='http: '将JavaScript代码直接添加到HTML或从远程位置加载JavaScript来实现交互功能。JavaScript可以发出HTTP(S)请求来异步加载网页内容,但它也可以将浏览器变成攻击者的武器。例如,以下代码可以向受攻击的网站发送大量请求:
function imgflood(){ var TARGE='受害者-网站.com' var URI='/index.php?var pic=new image()var rand=math . floor(math . random()* 1000)pic . src=' http://' target uri rand '=val ' } set interval(img flood,10)上面的脚本每秒在页面上创建10个图像标签。标签指向带有随机查询参数的“受害者-网站.com”。如果用户访问包含此代码的恶意网站,他将在不知情的情况下参与对victim-website.com的DDoS攻击,如下图所示:
许多网站使用一个通用的JavaScript库。为了节省带宽和提高性能,他们使用由第三方托管的JavaScript库。JQuery是Web上最流行的JavaScript库,到2014年,大约有30%的网站已经使用了它。其他受欢迎的库包括脸书软件开发工具包和谷歌分析。如果网站包含指向第三方托管的JavaScript文件的脚本标签,网站的所有访问者都会下载并执行该文件。如果攻击者破坏了这样一个托管JavaScript文件的服务器,并在文件中添加了DDoS代码,所有访问者都将成为DDoS攻击的一部分,这就是服务器劫持,如下图所示:
这种攻击之所以有效,是因为HTTP中没有任何机制可以让网站禁止被篡改的脚本运行。为了解决这个问题,W3C提出增加一个新的特性——资源一致性。该功能允许网站告诉浏览器,只有当它下载的脚本与网站想要运行的脚本一致时,它才能运行该脚本。这是通过密码哈希实现的,代码如下:
脚本src=' http:https://code.jquery.com/jquery-1.10.2.min.js'完整性=' sha 256-c6cb 9 uyi is9 ujeqinghwthvqh/e1uhg5twh y5qfqmyg=' cross origin=' anonymous '密码哈希可以唯一标识属性完整性提供网站要运行的脚本文件的密码哈希。下载脚本后,浏览器计算其哈希,然后将获得的值与integrity提供的值进行比较。如果不匹配,说明目标脚本已经被篡改,浏览器不会使用。但是目前很多浏览器都不支持这个功能,Chrome和Firefox也在增加对这个功能的支持。
中间人攻击是攻击者将恶意JavaScript代码插入网站的最新方式。通过浏览器访问网站时,中间有很多节点。如果任何中间节点在网页中添加恶意代码,都会形成中间人攻击,如下图所示:
加密技术可以完全阻止这种代码注入。有了HTTPS,浏览器和Web服务器之间的所有通信都必须加密和验证,这样可以防止第三方在传输过程中修改网页。因此,通过将网站设置为仅HTTPS、妥善保管证书和验证证书,可以有效防止中间人攻击。
针对网友的评论,Nick指出,SRI和HTTPS相辅相成,同时使用可以为网站提供更好的保护。除了以上方法,采用一些反DDoS安全产品加强防护也是一种选择。
版权声明:浅谈利用JavaScript攻击DDoS的原理及防御是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。