You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OWASP ZAP扫描中配置Header认证(含Docker脚本)

解决OWASP ZAP Docker扫描添加Header认证的问题

嘿,我来帮你搞定这个Header认证的问题!其实你不需要找复杂的登录脚本,有两种简单的方式实现键值对的Header认证,看你偏好哪种:

方法一:直接通过命令行参数添加(最简便)

ZAP自带的Replacer功能可以直接给所有请求添加指定Header,完全不需要额外脚本。你可以修改原来的Docker命令,去掉不必要的auth.loginurl参数,换成添加Header的配置:

docker run --rm -v $(Agent.ReleaseDirectory)/docker:/zap/wrk/:rw -t ictu/zap2docker-weekly zap-baseline.py \
-t https://www.example.com/ProductDetails/v1/details?productId=123456 \
-I -x governreport.xml \
-r testreport.html \
-z "replacer.full_list(0).description=API Key Header" \
-z "replacer.full_list(0).enabled=true" \
-z "replacer.full_list(0).matchtype=REQ_HEADER" \
-z "replacer.full_list(0).matchstr=api-key" \
-z "replacer.full_list(0).regex=false" \
-z "replacer.full_list(0).replacement=123"

参数解释:

  • 这组-z参数是配置ZAP的第一个Replacer规则(索引为0),作用是给所有请求的Header里加上api-key: 123。
  • 如果需要添加多个Header,只要把索引改成1、2,重复上述参数即可(比如replacer.full_list(1).description=Another Header)。

方法二:用Hook脚本实现(适合需要扩展逻辑的场景)

如果你还是想用Hook脚本的方式,那可以创建一个auth_hook.py脚本,放到你挂载的$(Agent.ReleaseDirectory)/docker目录下(这样ZAP能读取到):

def zap_started(zap, target):
    # 给所有请求添加API Key Header
    zap.replacer.add_rule(
        description="API Key Header",
        enabled=True,
        match_type="REQ_HEADER",
        match_string="api-key",
        regex=False,
        replacement="123"
    )

然后修改你的Docker命令,保留--hook参数,去掉没用的auth.loginurl:

docker run --rm -v $(Agent.ReleaseDirectory)/docker:/zap/wrk/:rw -t ictu/zap2docker-weekly zap-baseline.py \
-t https://www.example.com/ProductDetails/v1/details?productId=123456 \
-I -x governreport.xml \
-r testreport.html \
--hook=/zap/wrk/auth_hook.py

注意事项:

  • 确保你的挂载目录有读写权限,不然ZAP可能读不到Hook脚本。
  • 如果你的API Key包含特殊字符,记得用引号包裹参数,避免Shell解析出错。
  • 你原来的-I参数是开启被动扫描,这个配置可以保留,不影响Header的添加。

内容的提问来源于stack exchange,提问作者Vakar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 09:43:13