XSS(跨站脚本攻击)引发 DoS(拒绝服务攻击),本质上是利用 JavaScript 在受害者浏览器中发起资源耗尽或逻辑破坏,而非直接攻击服务器带宽。常见手法有:
-
发起海量请求:通过
fetch或XMLHttpRequest循环向目标接口发送大量请求,耗尽服务器连接池或计算资源;若结合 WebSocket 或 EventSource,可维持长连接直至服务端资源枯竭。 -
无限循环或内存泄漏:在页面中执行死循环(如
while(1))、无限创建 DOM 节点、申请超大数组,导致浏览器标签页卡死或崩溃,使正常用户无法使用该页面。 -
DOM 操作轰炸:频繁增删 DOM、触发强制同步布局或使用
requestAnimationFrame执行高耗时操作,阻塞 UI 线程,让页面彻底无响应。 -
存储型 XSS + 蠕虫式传播:将恶意脚本写入数据库,每个访问页面的用户都会执行脚本并再次发起请求,形成"自复制"式冲击,同时耗尽服务器资源和会话资源。
这些方式通常造成的是客户端 DoS(让某个用户无法使用页面)或应用层 DoS(通过大量合法会话拖垮后端)。
防御上需对用户输入进行严格输出编码、启用 CSP(内容安全策略)限制脚本权限,并对 API 做频率限制与资源隔离。
总结
- XSS攻击可以通过多种方式引发DoS攻击,包括发起海量请求、无限循环或内存泄漏、DOM操作轰炸以及存储型XSS的蠕虫式传播。
- 这些攻击主要针对客户端和应用层,造成浏览器崩溃或服务器资源耗尽。
- 防御措施包括严格输出编码、启用CSP策略以及API频率限制等。