# XSS 跨站脚本攻击原理与防护
> XSS全称 Cross-Site Scripting,跨站脚本;OWASP Top10 常年上榜。
> 核心一句话:**攻击者注入恶意JS代码,服务端存储/直接返回恶意代码,在受害者浏览器中执行,盗用Cookie、劫持会话、篡改页面、诱导跳转。**
## 一、三大分类
### 1. 存储型XSS(持久型,高危)
Payload存入后端数据库,**所有访问该页面的用户都会触发**。
攻击链路:
1. 攻击者在评论/昵称/留言提交恶意JS
2. 后端存入数据库,未做净化
3. 其他用户访问页面,后端读出数据渲染到HTML
4. 浏览器把payload当成JS执行
> 场景:评论区、用户签名、帖子、工单备注
### 2. 反射型XSS(非持久,中高危)
Payload放在URL参数里,**用户点击恶意链接,参数直接反射到页面渲染,不入库**。
示例链接:
`http://test.com/search?q=`
用户点开链接,页面直接把q参数输出到页面,执行JS。
> 特点:需要诱导用户点击链接;不会存入数据库。
### 3. DOM-XSS(基于DOM,客户端XSS)
**漏洞完全发生在前端JS,数据不经过后端**。后端返回正常内容,前端JS直接从URL/hash获取参数,写入DOM。
例:`location.hash` 的内容直接 `innerHTML` 渲染页面。
后端看不到payload,日志很难捕获,WAF容易漏掉。
## 二、攻击能力
- 盗取Cookie、SessionId(可配合劫持账号)
- 劫持页面DOM,篡改页面内容、伪造弹窗钓鱼
- 诱导用户点击,发起CSRF请求
- 窃取页面敏感数据、上传凭证
- 调用浏览器API,获取部分客户端信息
> 区分:
> XSS:**在浏览器执行JS,可以读取页面Cookie、页面数据**
> CSRF:借用已有Cookie发起请求,**不能读取页面返回内容**
## 三、识别测试方法(授权测试)
1. 输入点提交基础payload:``
2. 简易变形payload(绕过过滤):
`

`
`