jQuery 作为前端开发最常用的库之一,凭借简洁的 API 和跨浏览器兼容性,被广泛应用于各类项目中。然而,其动态操作 DOM、处理用户输入的特性,也使其成为安全漏洞的 “重灾区”。本文结合 jQuery 官方发布日志、CVE 漏洞库及 OWASP 安全指南,系统梳理 jQuery 典型安全漏洞,并提供经校验的修复方案。
一、jQuery 安全漏洞的核心场景
jQuery 的安全风险主要集中在 动态内容注入(如 .html()、.append())、用户输入处理(如选择器、URL 参数)和 跨域请求(如 $.ajax)三大场景。攻击者通过构造恶意输入,可绕过前端过滤,实现 XSS、CSRF 或数据泄露。
二、典型漏洞解析与权威修复方案
漏洞 1:XSS 跨站脚本攻击(CVE-2020-11022/11023)
漏洞背景
在 jQuery 3.5.0 之前版本(如 3.0.0),.html()、.append() 等方法通过正则表达式过滤用户输入时存在缺陷:
- 自闭合标签(如
<img src=x>)会被错误解析,导致未闭合的标签残留; - 事件属性(如
onerror、onclick)无法被完全清理,恶意脚本可执行。
权威依据:
- jQuery 3.5.0 发布日志明确提及该漏洞修复(官方链接);
- CVE-2020-11022 被 NVD 列为 “高严重性” 漏洞(NVD 详情)。
复现示例
javascript
// jQuery 3.0.0 中执行以下代码会触发 XSS
$("<img src=x onerror='alert(\"XSS\")'>").appendTo("body");
// 结果:弹出警示框,恶意脚本执行
修复方案
- 升级 jQuery 至 3.5.0+:新版本重写了 HTML 解析逻辑,严格校验标签闭合和事件属性;
-
优先使用
.text()替代.html():强制转义 HTM