Dynamic Application Security Testing
Probe a running application from the outside to find vulnerabilities that only appear at runtime.
IntermediateDASTApplication
Where it fits in the lifecycle
- Plan
- Code
- Build
- Test
- Release
- Deploy
- Operate
- Monitor
- Test Dynamic testing, integration security tests and security gates.
- Deploy Policy enforcement, admission control and infrastructure security.
Overview
Dynamic testing exercises a deployed instance of the application over HTTP. Because it observes real responses, it detects configuration issues, authentication flaws and injection behaviour that static analysis cannot see.
Why it matters
Runtime behaviour depends on configuration, middleware and infrastructure. DAST validates the deployed system as an attacker would experience it, closing the gap between reviewed code and running service.
How it works
- 01The scanner crawls or is fed an OpenAPI specification to discover endpoints.
- 02Active checks send crafted payloads and evaluate responses.
- 03Authenticated scans use a scripted login or injected session token.
- 04A report is produced with reproduction requests for each finding.
Common tools
OWASP ZAPBurp SuiteNucleiGitLabKubernetesDocker
Implementation examples
yamlOWASP ZAP baseline scan
dast: stage: test image: ghcr.io/zaproxy/zaproxy:stable script: - zap-baseline.py -t "$STAGING_URL" -r zap-report.html -I artifacts: paths: [zap-report.html]Security considerations
- Only scan environments you are authorised to test; never point active scans at production without approval.
- Active scans can create data, send email or trigger workflows — use disposable test data.
Best practices
- Run baseline scans per merge request and full scans nightly.
- Feed the scanner an API specification instead of relying on crawling.
- Keep a dedicated, resettable test environment.
Common mistakes
- Scanning production and triggering rate limits or alerts.
- Running unauthenticated scans only, missing most of the attack surface.