OWASP ZAP is the world's most widely used open-source web application security scanner. This guide takes you from installation to full CI/CD pipeline integration.
Anay Pandya
1,346 words
Anay Pandya
Founder of ZeriFlow · 10 years fullstack engineering · About the author
Key Takeaways
OWASP ZAP (Zed Attack Proxy) is the world's most widely used open-source web application security scanner, maintained by the Open Web Application Security Project. Whether you are a developer running security checks locally or a DevSecOps engineer integrating automated scanning into a pipeline, ZAP offers a flexible, powerful, and free solution.
<div class="zf-stat-callout" style="background:#0d1117;border:1px solid rgba(16,185,129,0.25);border-left:3px solid #10b981;border-radius:4px;padding:16px 20px;margin:24px 0"> <p style="margin:0 0 4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.15em;color:#10b981;font-family:monospace">ZeriFlow Data — 12,400+ sites analyzed</p> <p style="margin:0;font-size:13px;color:#e2e8f0;line-height:1.6;font-family:monospace">In ZeriFlow's corpus of 12,400+ scanned sites, 72% score below 70/100 on security. Only 7% achieve a score above 85 — a threshold that corresponds to passing all OWASP-aligned header and configuration checks.</p> </div>
Keep reading
Is your site actually secure?
Run a free check — 60 seconds
This guide walks through everything: installation, configuring the spider, running active scans, interpreting results, and integrating ZAP into CI/CD pipelines. We will also compare ZAP with ZeriFlow to help you understand which tool fits which use case.
Start with a baseline: Before configuring ZAP, run a free ZeriFlow scan on your target URL. ZeriFlow's 80+ automated checks will surface header and configuration issues instantly — giving ZAP more focused scope.
OWASP ZAP is an intercepting proxy and active vulnerability scanner. It can:
ZAP is ideal for: - Developers who want to shift security left without buying commercial tools. - QA engineers adding security tests to existing test suites. - DevSecOps teams integrating DAST into pipelines.
Download ZAP from zaproxy.org/download. Packages are available for: - Windows (installer) - macOS (DMG) - Linux (snap, or portable ZIP)
ZAP requires Java 11+, though the packaged installers include a bundled JRE.
docker pull ghcr.io/zaproxy/zaproxy:stableThe Docker image is the preferred way to run ZAP in automated environments — no GUI required, easy to pin to a version.
ZAP's spider crawls your application to discover all URLs. It works by: 1. Starting from a seed URL. 2. Parsing HTML, JavaScript, and forms to find links. 3. Adding discovered URLs to the scan scope.
The Ajax Spider is a second crawler that launches a real browser (via Selenium) to handle JavaScript-heavy SPAs that the traditional spider misses.
After spidering, ZAP's active scanner sends crafted payloads to every discovered endpoint, testing for: - SQL injection - Cross-site scripting (XSS) - Path traversal - Server-side template injection - Insecure redirects - And dozens more vulnerabilities from the OWASP Top 10.
ZAP passively analyzes all traffic passing through its proxy, flagging issues without sending additional requests. This is safe to run against production environments.
docker run -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py -t https://your-target.com -r zap-report.htmlZAP provides three built-in scan scripts: - zap-baseline.py — Passive scan only, safe for production. - zap-full-scan.py — Full active scan, not safe for production. - zap-api-scan.py — Scan REST/GraphQL APIs using an OpenAPI spec.
name: ZAP Security Scan
on: [push]
jobs:
zap_scan:
runs-on: ubuntu-latest
steps:
- name: ZAP Baseline Scan
uses: zaproxy/action-baseline@v0.10.0
with:
target: 'https://your-staging-url.com'
fail_action: true
issue_title: 'ZAP Security Findings'The zaproxy/action-baseline GitHub Action runs a passive scan and can optionally open a GitHub Issue with findings.
zap_scan:
image: ghcr.io/zaproxy/zaproxy:stable
script:
- zap-baseline.py -t $STAGING_URL -r gl-dast-report.html
artifacts:
paths:
- gl-dast-report.htmlfail_action to break the build only on High severity findings.ZAP categorizes alerts by confidence and risk:
| Risk | Meaning |
|---|---|
| High | Likely exploitable, immediate attention needed |
| Medium | Should be fixed; may be exploitable under certain conditions |
| Low | Best practice issues, hardening recommendations |
| Informational | Notes about the application, not vulnerabilities |
Confidence (False Positive, Low, Medium, High, Confirmed) tells you how certain ZAP is about each finding. Start with High Risk / High Confidence findings.
A: The passive scan (baseline) is safe — it only observes traffic and does not send attack payloads. The active scan sends crafted inputs and can modify data, so it should only be run against staging or test environments with explicit authorization.
A: ZAP is a full DAST scanner requiring setup, configuration, and authentication scripting for complex apps. ZeriFlow is a configuration-focused scanner that runs 80+ checks (headers, TLS, exposed paths) in seconds with zero setup. ZeriFlow is ideal for fast feedback in development; ZAP is better for comprehensive automated testing in a dedicated security pipeline.
A: Yes. Use zap-api-scan.py with an OpenAPI/Swagger specification file. ZAP will discover all API endpoints from the spec and test them systematically.
A: It depends on the number of endpoints and the scan policy. A small app with 50 pages might take 10-20 minutes. A large application with hundreds of pages and parameters can take several hours. Running scans in parallel and limiting scope helps reduce time.
A: ZAP supports form-based authentication, HTTP Basic/Digest, OAuth 2.0 token injection, and custom script-based authentication. For modern apps using JWT or OAuth, script-based auth gives you full flexibility.
| Feature | OWASP ZAP | ZeriFlow |
|---|---|---|
| Setup time | 30+ minutes | 0 (browser-based) |
| Active vulnerability scanning | Yes | No |
| check your security headers | Yes | Yes (80+ checks) |
| TLS misconfiguration | Yes | Yes (automated) |
| Authenticated scanning | Yes (scripted) | N/A |
| CI/CD integration | Full Docker/GitHub Actions | Lightweight API |
| False positive rate | Medium | Low |
| Ideal for | Security engineers, DevSecOps | Developers, fast feedback |
The ideal stack uses both: ZeriFlow for continuous lightweight checks on every deploy, ZAP for deeper scanning in a dedicated security pipeline stage.
OWASP ZAP has earned its reputation as the go-to open-source DAST scanner. With proper configuration, it can scan complex authenticated applications, integrate into any CI/CD pipeline, and surface real vulnerabilities before attackers find them.
Start with the baseline scan in your pipeline today. Add authenticated scanning as your team matures. And pair ZAP with ZeriFlow for the fast, configuration-level checks that need zero setup — so your ZAP scans can focus on the deeper application-layer vulnerabilities that matter.
<!-- zf-internal-links -->
Check if your site is vulnerable to these attacks — free.
80+ automated security checks in under 60 seconds.
Related resources
Website Vulnerability Scanner
Run a broader website security audit across headers, TLS, DNS, cookies, SEO, and disclosure checks.
Security Headers Checker
Check CSP, HSTS, X-Frame-Options, and other response headers.
SSL Checker
Review TLS certificate, HTTPS, and transport security signals.
DMARC Checker
Validate email authentication records for domain spoofing protection.
CSP Checker
Review Content-Security-Policy coverage and common gaps.
June 24, 2026
Best Security Tools for AI Startups
Monitor your security score
Schedule recurring scans and catch regressions after deployments.