浅谈 JavaScript DDoS 攻击原理与防御

简介:
分布式拒绝服务攻击(DDoS)攻击是一种针对网站发起的最古老最普遍的攻击。Nick Sullivan是网站加速和安全服务提供商CloudFlare的一名系统工程师。近日,他撰文介绍了攻击者如何利用恶意网站、服务器劫持和中间人攻击 发起DDoS攻击,并说明了如何使用HTTPS以及即将到来的名为“子资源一致性(Subresource Integrity,简称SRI)”的Web新技术保护网站免受攻击。

现代网站的大部分交互都来自于JavaScript。网站通过直接向HTML中添加JavaScript代码或者通过HTML元 素<script src=”">从远程位置加载JavaScript实现交互功能。JavaScript可以发出HTTP(S)请求,实现网页内容异步加载,但它也 能将浏览器变成攻击者的武器。例如,下面的代码可以向受攻击网站发出洪水般的请求:

function imgflood() {  
  var TARGET = 'victim-website.com'
  var URI = '/index.php?'
  var pic = new Image()
  var rand = Math.floor(Math.random() * 1000)
  pic.src = 'http://'+TARGET+URI+rand+'=val'
}
setInterval(imgflood, 10)

上述脚本每秒钟会在页面上创建10个image标签。该标签指向“victim-website.com”,并带有一个随机查询参数。如果用户访问 了包含这段代码的恶意网站,那么他就会在不知情的情况下参与了对“victim-website.com”的DDoS攻击,如下图所示:

浅谈 JavaScript DDoS 攻击原理与防御

许多网站都使用一套通用的JavaScript库。为了节省带宽及提高性能,它们会使用由第三方托管的JavaScript库。jQuery是 Web上最流行的JavaScript库,截至2014年大约30%的网站都使用了它。其它流行的库还有Facebook SDK、Google Analytics。如果一个网站包含了指向第三方托管JavaScript文件的script标签,那么该网站的所有访问者都会下载该文件并执行它。如 果攻击者攻陷了这样一个托管JavaScript文件的服务器,并向文件中添加了DDoS代码,那么所有访问者都会成为DDoS攻击的一部分,这就是服务 器劫持,如下图所示:

浅谈JS DDoS攻击原理与防御

这种攻击之所以有效是因为HTTP中缺少一种机制使网站能够禁止被篡改的脚本运行。为了解决这一问题,W3C已经提议增加一个新特性子资源一致性。该特性允许网站告诉浏览器,只有在其下载的脚本与网站希望运行的脚本一致时才能运行脚本。这是通过密码散列实现的,代码如下:

<script src="https://code.jquery.com/jquery-1.10.2.min.js" 
integrity="sha256-C6CB9UYIS9UJeqinPHWTHVqh/E1uhG5Twh+Y5qFQmYg=" 
crossorigin="anonymous">

密码散列可以唯一标识一个数据块,任何两个文件的密码散列均不相同。属性integrity提供了网站希望运行的脚本文件的密码散列。浏览器在下载 脚本后会计算它的散列,然后将得出的值与integrity提供的值进行比较。如果不匹配,则说明目标脚本被篡改,浏览器将不使用它。不过,许多浏览器目 前还不支持该特性,Chrome和Firefox正在增加对这一特性的支持。

中间人攻击是攻击者向网站插入恶意JavaScript代码的最新方式。在通过浏览器访问网站时,中间会经过许多节点。如果任意中间节点向网页添加恶意代码,就形成了中间人攻击,如下图所示:

浅谈JS DDoS攻击原理与防御

加密技术可以彻底阻断这种代码注入。借助HTTPS,浏览器和Web服务器之间的所有通信都要经过加密和验证,可以防止第三者在传输过程中修改网页。因此,将网站设为HTTPS-only,并保管好证书以及做好证书验证,可以有效防止中间人攻击。

在回复网友评论时,Nick指出,SRI和HTTPS是相辅相成的,二者同时使用可以为网站提供更好的保护。除了上述方法外,采用一些防DDoS安全产品来加强防护也是一种选择。


来源:51CTO

相关文章
|
25天前
|
Web App开发 前端开发 JavaScript
技术心得记录:瀑布流的布局原理分析(纯CSS瀑布流与JS瀑布流)
技术心得记录:瀑布流的布局原理分析(纯CSS瀑布流与JS瀑布流)
16 0
|
12天前
|
弹性计算 负载均衡 网络协议
在缓解DDoS攻击方面,如何优化业务架构?
**缓解DDoS攻击的策略:** 1. 缩小暴露面,隔离业务并隐藏非必需服务端口。 2. 使用VPC以增强内网安全。 3. 优化业务架构,进行压力测试,部署弹性伸缩和负载均衡。 4. 优化DNS解析,智能解析并屏蔽异常DNS响应。 5. 提供充足带宽以防攻击时影响正常流量。 6. 服务器安全加固,更新补丁,限制服务和端口,使用防火墙。 7. 建立应急响应预案,定期演练。 8. 考虑采用Web应用防火墙和专业DDoS防护服务。
147 17
|
9天前
|
Cloud Native 安全 网络协议
有没有一些开源的工具可以帮助我抵御DDoS攻击?
开源DDoS防护工具包括: 1. ExaBGP:多功能BGP工具,用于流量保护。 2. DDoS-Ripper:DDoS攻击服务器,产生大量流量。 3. mCaptcha:无感知验证码,防御垃圾信息和DDoS。 4. Gatekeeper:首个开源DDoS防护系统。 5. Curiefense:统一的云原生应用保护平台,内置DDoS防护。 6. XDP-Firewall:利用Linux XDP快速阻断恶意流量的防火墙。
|
9天前
|
网络协议 网络安全
有哪些常见的DDoS攻击类型?
DDoS攻击可分为三类:网络层(ICMP Flood, ARP Flood, IP分片)、传输层(SYN Flood, ACK Flood, UDP Flood)和应用层(DNS Flood, HTTP Flood, CC攻击),目标是消耗带宽、资源或使服务不可用。
|
17天前
|
存储 JavaScript 前端开发
js【详解】数据类型原理(含变量赋值详解-浅拷贝)
js【详解】数据类型原理(含变量赋值详解-浅拷贝)
16 0
|
18天前
|
安全 网络安全
安全----DDOS攻击解析,预防DDOS攻击的反击时ip封禁
安全----DDOS攻击解析,预防DDOS攻击的反击时ip封禁
|
20天前
|
前端开发 JavaScript
前端 JS 经典:图片裁剪上传原理
前端 JS 经典:图片裁剪上传原理
7 0
|
20天前
|
缓存 JavaScript 前端开发
前端 JS 经典:浏览器中 ESModule 的工作原理
前端 JS 经典:浏览器中 ESModule 的工作原理
14 0
|
JavaScript 前端开发 Java
《JS原理、方法与实践》- Javascript简介
《JS原理、方法与实践》- Javascript简介
87 0
|
13天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
26 2