云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名备案_国外网站空间申请_好用

小七 141 0

基于JavaScript的DDoS简介

CloudFlare保护数百万网站免受在线威胁。针对网站发起的最古老和最普遍的攻击之一是分布式拒绝服务(DDoS)攻击。在典型的DDoS攻击中,攻击者会导致大量计算机向服务器发送数据,从而使服务器的容量无法承受并阻止合法用户访问。近年来,DDoS技术变得更加多样化:攻击者正在以新的有趣的方式诱骗毫无戒备的计算机参与攻击。去年,我们看到了使用NTP反射执行的可能是历史上最大的攻击(>400Gbps)。在这次攻击中,毫无防备的参与者是全球配置错误的NTP服务器。今年,我们看到了一个令人不安的新趋势:攻击者使用恶意JavaScript诱骗毫无戒心的web用户参与DDoS攻击。NTP或DNS反射攻击可能造成的总损害受易受攻击服务器的数量限制。随着时间的推移,这个数字随着网络修补服务器而减少,并且攻击的最大规模限制在所有易受攻击服务器的出站容量。对于基于JavaScript的DDoS,任何一台带有浏览器的计算机都可以加入攻击,使得潜在的攻击量几乎没有限制。在这篇博文中,我们将讨论攻击者是如何利用恶意网站、服务器劫持和中间人攻击来发动DDoS攻击的。我们还将描述如何通过使用HTTPS和一种称为Subresource Integrity(SRI)的即将到来的web技术来保护您的站点不被这些攻击所利用。JavaScript DDoS的工作原理现代网站的大部分交互性都来自JavaScript。站点通过将JavaScript直接添加到HTML中,或者通过HTML元素从远程位置加载JavaScript,来包含交互元素。浏览器获取src指向的代码并在网站上下文中运行。推动了2000年代中期web2.0热潮的基本概念是网站能够从JavaScript异步加载内容。一旦可以加载新内容而不必遵循链接或加载新页面,Web页面变得更具交互性。虽然从JavaScript发出HTTP(S)请求的能力可以用来让网站更加有趣,但它也可以用来将浏览器变成一种武器。例如,发现以下脚本(稍作修改)向受害者网站发送大量请求:函数imgflood(){var TARGET='受害者-网站'var URI='/index.php?'var pic=新图像()随机变量=数学地板(数学随机()*1000)图src='http://'+TARGET+URI+rand+'=val'}设置间隔(imgflood,10)此脚本每秒在页面上创建图像标记100次。图像指向"受害者"-网站"随机查询参数。每个访问包含此脚本的站点的访问者都会成为针对"受害者"的DDoS攻击的无意参与者-网站". 浏览器发送的消息是有效的HTTP请求,因此这是第7层攻击。这种攻击比基于网络的攻击(如NTP和DNS反射)更危险。第7层攻击不仅仅是用大量数据"堵塞管道",而是导致web服务器和后端工作,使网站资源过载,导致其无响应。如果攻击者在页面中嵌入此JavaScript来设置站点,则站点访问者将成为DDoS参与者。网站流量越大,DDoS就越大。由于专门构建的攻击站点通常没有很多访问者,因此攻击量通常很低。使用这种技术执行真正大规模的DDoS攻击需要更多的创造力。共享JavaScript泄露许多网站都是使用一组通用的JavaScript库构建的。为了节省带宽和提高性能,许多站点最终使用由第三方托管的JavaScript库。网络上最受欢迎的JavaScript库是jQuery,截至2014年,约30%的网站都在使用它的某些版本。许多网站上的其他流行脚本包括Facebook SDK和Google分析。如果一个网站有一个脚本标记指向第三方托管的JavaScript文件,那么该站点的所有访问者都将下载JavaScript并执行它。如果攻击者能够危害托管流行JavaScript文件的服务器并向其添加DDoS代码,则引用该脚本的所有站点的访问者都将成为DDoS的一部分。2014年9月,RiskIQ报告称jQuery.com网站的网站被攻破了,它拥有一个非常流行的JavaScript库,很容易被恶意的JavaScript库取代。攻击者将恶意JavaScript注入数百万个网站的威胁不再是理论上的了。旁白:引入子资源完整性第三方资产受损的问题是一个老问题。HTTP中没有机制允许网站在脚本被篡改时阻止其运行。为了解决这个问题,W3C提出了一个称为子资源完整性(SRI)的新特性。此功能允许网站告诉浏览器,只有当脚本与站点期望的匹配时才运行脚本。使用以下脚本标记:无论文件的内容是什么,浏览器都会下载并运行.js文件。如果有人破坏托管站点的服务器并用恶意脚本替换该文件,浏览器将毫无疑问地运行它。使用SRI,如果脚本与预期不符,可以告诉浏览器不要运行该脚本。这是使用加密哈希完成的。加密哈希是唯一标识一段数据的方法。这就像指纹:没有两个文件具有相同的哈希。使用SRI,您可以使用名为"integrity"的属性包含脚本的真实版本的哈希值。下载脚本后,浏览器将计算其哈希值并将其与脚本标记中预期的哈希值进行比较。如果它们不匹配,则脚本已被篡改,浏览器将不使用它。添加此标记可保护您的站点访问者免受第三方JavaScript主机的损害。计算标签是一个简单的过程,只需完成一次。甚至还有一个服务可以为你计算哈希值。更新:带有SRI的脚本需要crossorigin属性和Cross-Origin Resource Sharing(CORS)头,以确保正确执行浏览器同源策略并防止跨站点脚本(XSS)攻击。目前很多浏览器都不支持这个功能,但它正在为Chrome和Firefox开发。服务器漏洞通常会很快被检测到并修复,因此攻击者转而使用其他方法在网站中插入恶意JavaScript。他们这样做的最新方法是我们之前讨论过的一种技术:中间人攻击。中间人网站通过遍历互联网的网络和从一台机器跳到另一台机器,从一台web服务器访问你的浏览器。位于浏览器和服务器之间的任何一台机器都可以以任何方式修改数据,包括更改HTML或JavaScript的内容。如果处于通信中间的计算机做了一些恶意的事情,比如在网页中添加糟糕的JavaScript,这称为中间人攻击。在传输过程中修改网站是ISP和WiFi提供商常用的盈利技术。这就是一些酒店网络、蜂窝网络和其他网络如何在网站中插入广告和跟踪cookies。有自尊心的企业通常不会将攻击代码注入网站,但作为互联网的一部分,他们有能力这样做。如果攻击者获得与ISP类似的特权网络位置(如网络互连或对等交换),他们还可以将JavaScript注入通过其网络的网站。如果注入的JavaScript包含DDoS脚本,则该网站的所有访问者都将成为DDoS参与者。这可能发生在任何通过流氓网络的网站或网络资产上。更糟糕的是,如果流行的JavaScript文件的路径恰好经过攻击者的网络,参与攻击的浏览器数量会急剧增加。完全停止这种代码注入的技术是加密。使用HTTPS,浏览器和web服务器之间的所有通信都经过加密和身份验证,从而防止中间方修改它。使您的站点仅使用HTTPS可防止您的站点在传输过程中被修改。这不仅可以防止ISP和WiFi提供商插入广告和跟踪Cookie,还可以防止您的网站被用于JavaScript DDoS。结论基于JavaScript的DDoS攻击是互联网上一个日益严重的问题。CloudFlare发现并定期阻止使用我们服务的数百万网站的这些攻击,我们从看到的每一次攻击中吸取教训。基于JavaScript的DDoS可以在任何时候启动,所以只使用HTTPS来防止您的站点成为问题的一部分。CloudFlare只向所有客户(包括免费计划中的客户)提供HTTPS和转HTTPS的功能。