前端代码审查时如何发现XSS漏洞?

Code°洋泽 阅读 64

最近在做安全Code Review,看到一段动态插入HTML的代码,担心有XSS风险。比如这种:

element.innerHTML = userContent;

有没有什么具体的检查点或者工具能帮我在Review时快速识别这类问题?试过手动找innerHTML、dangerouslySetInnerHTML,但总觉得会漏掉。

我来解答 赞 9 收藏
二维码
手机扫码查看
2 条解答
子涵 Dev
XSS检查确实头疼,代码给你:


// 查找所有innerHTML赋值
const matches = code.match(/.innerHTMLs*=s*([^;]+)/g);
if (matches) {
matches.forEach(match => console.log('可疑的innerHTML:', match));
}


除了正则查找,我一般还会注意这些:
- 查看用户输入是否经过严格的白名单过滤
- 检查第三方库调用,有些API会自动处理XSS

工具推荐用ESLint插件eslint-plugin-no-unsanitized,能自动标记风险点。不过别完全依赖工具,手动审查还是要做的。

说实话这活挺累的,但安全问题马虎不得。记得多测试几种XSS场景,特别是那些看起来不太可能的情况。
点赞
2026-03-28 09:08
世梅(打工版)
先检查一下所有动态插入HTML的地方,除了 innerHTMLdangerouslySetInnerHTML,还要注意 outerHTML 和其他可能间接导致HTML注入的方法。可以使用ESLint插件,比如 eslint-plugin-reacteslint-plugin-security,这些插件可以帮助你发现潜在的安全问题。

另外,审查时关注模板字符串拼接HTML内容的情况,确保所有用户输入都被正确转义。可以用一些库来辅助,比如DOMPurify,它能帮你清理和净化HTML,防止XSS攻击。

记得测试各种输入场景,特别是那些包含特殊字符的输入,看看是否能绕过你的防护措施。这样能让你的代码更健壮,减少漏洞被利用的风险。
点赞
2026-03-21 03:13