如何在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
相关产品推荐
相关产品推荐

