修复XSS漏洞后怎么验证是否彻底解决了?

a'ゞ雨辰 阅读 54

刚处理完前端页面的XSS漏洞,用两个不同工具测试结果却不一样,一个显示干净一个还能注入,这时候该怎么确认漏洞到底修好了没?

之前在评论区输入,修复后用OWASP ZAP扫描没问题,但自己手动测试居然还能弹窗,控制台却没报错,是不是哪里漏掉了防御逻辑?

我来解答 赞 8 收藏
二维码
手机扫码查看
2 条解答
程序员树灿
手动测试能弹窗说明没修干净,重点检查 innerHTML 和 v-html 这类危险操作有没有漏网之鱼,用以下代码过滤特殊字符:

function escapeHtml(str) {
return str.replace(/[&<>"']/g, m => ({
'&': '&', '<': '<', '>': '>',
'"': '"', "'": ''', '
': '`'
}[m]));
}
点赞 7
2026-02-03 13:00
西门思晨
XSS这玩意儿确实挺烦人的,尤其是这种工具测试结果不一致的情况。先说结论:别完全相信自动扫描工具,手动测试才是王道。

既然你提到评论区,那可能是wp_kses_post()没用对地方,或者漏掉了某些场景。建议按下面步骤再检查一遍:

1. 确保评论内容保存时经过了wp_filter_post_kses()处理,这是WordPress自带的防XSS过滤函数。
2. 显示评论内容的地方,用esc_html()esc_attr()转义一下,防止恶意脚本执行。
3. 如果用了自定义字段或其他存储方式,也得加类似的过滤逻辑,主题里加个全局过滤器保险点。

add_filter('comment_text', 'wp_kses_post');


至于为什么OWASP ZAP没问题但手动还能弹窗,可能是因为工具只检测常见payload,而你手动能构造更复杂的攻击代码。多试几个payload,比如:<img src=x onerror=alert(1)> 这种绕过型的。

最后提醒一句,前端加点CSP(Content Security Policy)也不错,虽然不能完全依赖,但能多一层防护总是好的。折腾完再测测看,应该就没问题了。
点赞 10
2026-01-28 19:04