OWASP ZAP 扫描时为什么总报 CSRF 漏洞?

夏侯红瑞 阅读 64

我在用 OWASP ZAP 扫描一个内部管理后台,每次扫描都提示存在 CSRF 漏洞,但我前端已经加了 X-CSRF-Token 请求头,后端也做了校验,为啥还会报?

尝试过在 ZAP 的“上下文”里设置 anti-CSRF token 字段为 X-CSRF-Token,但扫描结果还是没变。是我配置错了还是 ZAP 识别不到这个 header?

我来解答 赞 5 收藏
二维码
手机扫码查看
1 条解答
シ苗苗
シ苗苗 Lv1
兄弟,这个问题我之前也卡过好久,说白了就是ZAP没识别到你配置的那个token。

问题出在配置位置上。你说的是在“上下文”里设置anti-CSRF token字段,但ZAP识别anti-CSRF token的地方其实不在那。正确的位置是:菜单栏 -> 工具 -> 会话属性 -> Anti-CSRF tokens,在这个页面把X-CSRF-Token加进去。

如果你已经加对了,但还是报,有几个可能的原因:

一是ZAP的主动扫描(Active Scan)在发送请求时根本没带这个header。它只会被动扫描时尝试读取你配置的token,主动扫描那块有时候会漏掉。

二是你加的是header,但ZAP默认只识别表单字段和cookie里的token。

解决办法有几个:

最直接的就是在ZAP的问题(Alerts)里找到那个CSRF漏洞,右键点开,选择“标记为误报”或者标记为“已确认”,这样下次扫描就不会再显示了。反正是内部后台,你自己知道有保护就行。

如果你想让ZAP真正识别,最好的办法是把token放在cookie里而不是header,ZAP对cookie支持最好。或者在扫描时用ZAP的API手动在请求里注入这个header。

还有一个偏方:如果你用的是ZAP的浏览器,直接用那个内置浏览器登录,ZAP会自动记录session和token,比手动配置靠谱。

实在不行就放弃抵抗吧,这种误报很常见的,扫出来标记掉就行,别纠结。
点赞
2026-03-18 10:03