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

如何在OWASP ZAP自动化框架的YAML中正确引用环境变量?

问题解决:ZAP Automation Framework YAML正确引用环境变量

问题背景

在Ubuntu 24.04上通过Bash脚本+Automation Framework YAML运行OWASP ZAP 2.16.1无头扫描时,YAML中${LOGIN_USER}和${LOGIN_PASS}无法被系统环境变量的值替换,始终为空,导致扫描提示"未定义上下文"、"无法识别用户scan_user"。

核心原因

YAML的env段中,若给变量设置了空字符串默认值(如LOGIN_USER: ""),ZAP会优先使用这个空值,而忽略系统环境变量的内容。

解决方案

1. 修正YAML的env配置

将需要从环境变量读取的字段值设为null(不指定默认值),让ZAP自动加载系统环境变量:

env:
  TARGET_URL: "https://example.com"
  LOGIN_USER: null  # 改为null,从环境变量读取
  LOGIN_PASS: null  # 改为null,从环境变量读取
  REPORT_DIR: "/tmp"
  REPORT_NAME: "zap-report-DEFAULT.html"

contexts:
  - name: internal-context
    urls:
      - "${TARGET_URL}"
    authentication:
      method: form
      parameters:
        loginPageUrl: "${TARGET_URL}/login"
        loginRequestUrl: "${TARGET_URL}/login"
        loginRequestBody: "username=${LOGIN_USER}&password=${LOGIN_PASS}"
    users:
      - name: scan_user
        enabled: true
        credentials:
          username: "${LOGIN_USER}"
          password: "${LOGIN_PASS}"
jobs:
  - type: spider
    parameters:
      context: internal-context
      user: scan_user
  - type: activeScan
    parameters:
      context: internal-context
      user: scan_user

2. 可选:通过命令行显式传递环境变量

在启动ZAP时,用-env参数明确指定变量,进一步确保优先级:

export TARGET_URL="https://example.com"
export REPORT_DIR="/tmp"

read -p "ZAP Username: " LOGIN_USER
read -sp "ZAP Password: " LOGIN_PASS; echo

TS=$(date +"%Y%m%d-%H%M%S")
export REPORT_NAME="zap-report-${TS}.html"

# 用-env参数传递变量
zaproxy -cmd -autorun /path/auth-scan.yaml -env LOGIN_USER=$LOGIN_USER LOGIN_PASS=$LOGIN_PASS

3. 验证配置

运行脚本后,查看ZAP输出,若环境变量部分显示LOGIN_USER=你的用户名、LOGIN_PASS=你的密码,且无"未定义上下文"提示,说明配置生效。

关键说明

  • ZAP Automation Framework的变量优先级:命令行-env参数 > 系统环境变量 > YAMLenv段的默认值。
  • 若YAMLenv段给变量设置了非空默认值,会覆盖系统环境变量;设置为null则会读取系统环境变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 21:43:11