术语表

DAST是什么:从外部探测运行中的应用以发现弱点

DAST从外部测试正在运行的Web应用以发现漏洞。介绍它与SAST、IAST和SCA的区别,以及如何用于自己的应用。

发布于 2026-11-15 更新于 2026-11-15 2 分钟阅读
本页目录

DAST(动态应用安全测试)从外部测试正在运行的应用,以发现弱点。本页说明它与其他方法的区别,以及如何用于您自己的应用(不涵盖测试他人网站)。

什么是DAST

DAST是动态应用安全测试(dynamic application security testing)的缩写。OWASP的DevSecOps指南将其描述为黑盒测试,即发现正在运行的应用中的安全漏洞和弱点。黑盒是指只通过从外部可见的内容进行测试,而不查看内部源代码。

实际操作中,工具会沿着应用的页面和输入字段进行访问,发送测试请求,并在响应中寻找问题的迹象。该指南称,它对输入/输出验证、身份验证问题和服务器配置错误尤其有用。

工作原理

1. 将工具指向您自己测试环境的URL
2. 工具沿页面和输入字段访问并发送测试流量
↓ 观察响应内容、响应头和错误行为
3. 列出问题迹象;由人员确认并修复
DAST从外部向正在运行的应用发送测试请求,并查看其响应中的问题。它不读取源代码。

与SAST、IAST和SCA的区别

方法检查对象是否运行应用适用于
DAST运行中应用从外部表现的行为是输入/输出验证、身份验证、服务器配置
SAST源代码或编译后的代码否在开发早期发现编码问题
IAST应用的内部行为(通过传感器)是(测试期间)自动化测试中出现的问题
SCA库和其他依赖项否存在已知漏洞(CVE)的组件

对于SAST,OWASP列出了一些局限,例如只能发现相对较小比例的应用安全缺陷、误报较多以及会漏掉配置问题。DAST有助于弥补这一缺口,但也并不完整。关于SCA,请参阅使用OSV-Scanner审计依赖项。

如何用于自己的应用(以OWASP ZAP为例)

ZAP(Zed Attack Proxy,原称OWASP ZAP)是一款免费的开源DAST工具。其官方网站现将其标注为"ZAP by Checkmarx"。

  1. 准备您管理的测试环境的URL。使用测试环境,而非生产环境
  2. 运行基线扫描。根据ZAP文档,它仅为被动模式:默认运行1分钟的爬虫(即页面跟踪功能),不执行任何攻击。最多只需几分钟
  3. 查看结果,并由人员确认哪些发现是真实的;误报确有发生
  4. 如有需要,再转向主动扫描,且仅在测试环境中进行。它会对目标运行已知攻击,文档称不得用于您不拥有的Web应用
  5. 定期重新运行,例如在CI中,每次修复后运行一次

仅针对您拥有或管理的应用的测试环境使用

DAST工具发送的流量与真实攻击相似。若在您无权测试的网站上运行,可能构成未经授权的访问或服务中断。ZAP文档同样指出,不得对您不拥有的Web应用使用主动扫描。在生产环境上运行还可能产生副作用,例如创建数据或增加负载。

DAST遗漏的内容

ZAP文档指出,其主动扫描无法发现访问控制失效等逻辑问题,因此应辅以手动测试。像IDOR这类漏洞(即一名用户可以查看另一名用户的数据)对自动化工具而言很难发现,因为工具并不知道正确的行为应该是什么。您需要编写自己的测试,请求另一用户的ID,并确认该请求会被拒绝。

另一方面,配置检查正是DAST擅长的内容。关于哪些设置值得配置,请参阅安全响应头:哪些仍然重要。

本站观点:DAST是最后一道防线。应从三个层面思考:代码、组件、行为

与其指望一个工具找出所有问题,不如结合三种从不同位置查看的方法更为现实:先读取代码(SAST),再检查组件是否存在已知漏洞(SCA),然后运行应用并从外部进行测试(DAST)。工具不擅长的"谁可以做什么",应通过您自己编写的测试加以保护。不要直接信任工具输出,修复前请由人员确认。

资料来源(一手)

  • OWASP DevSecOps指南,"Dynamic Application Security Testing" — owasp.github.io(DAST的定义,黑盒)
  • OWASP DevSecOps指南,"Interactive Application Security Testing" — owasp.github.io(IAST)
  • OWASP Community,"Source Code Analysis Tools" — owasp.org(SAST及其局限)
  • ZAP文档,"Active Scan" — zaproxy.org(不得用于您不拥有的应用;无法发现逻辑问题)
  • ZAP文档,"Baseline Scan" — zaproxy.org(仅被动模式;运行时间)
  • 对SCA的描述是一般性定义;未核实其官方定义

延伸阅读

FAQ

Q什么是DAST?
A

DAST是动态应用安全测试(dynamic application security testing)的缩写。它从外部向正在运行的应用发送测试请求,以发现漏洞和弱点。OWASP的DevSecOps指南将其描述为黑盒测试,即在不需要访问源代码的情况下,发现正在运行的应用中的安全漏洞和弱点。

QDAST与SAST有什么区别?
A

SAST(静态应用安全测试)在不运行的情况下分析源代码或编译后的代码。DAST则运行应用,并通过外部请求对其进行测试。OWASP指出,SAST可以在开发早期运行,但只能发现相对较少的缺陷,误报很多,并且常常漏掉配置问题。DAST适合那些只有在应用运行时才会出现的问题。

QIAST和SCA是什么?
A

IAST(交互式应用安全测试)在应用内部放置传感器模块,在测试过程中监视其行为。SCA(软件成分分析)检查您使用的库和其他依赖项是否存在已知漏洞。它们查看的位置与DAST不同,因此需要结合使用。

QDAST能发现什么?
A

OWASP的指南称,它对输入/输出验证、身份验证问题和服务器配置错误尤其有用。另一方面,OWASP ZAP文档称,其主动扫描无法发现访问控制失效等逻辑问题,因此应辅以手动测试。

Q我可以对别人的网站运行DAST吗?
A

不可以。OWASP ZAP文档明确指出,不得对您不拥有的Web应用使用主动扫描。应将其限制在您拥有或管理的应用上,或您有明确许可(例如书面许可)的应用上。使用测试环境而非生产环境更为安全。

QDAST应从哪里开始?
A

从针对您自己测试环境URL的OWASP ZAP基线扫描开始。它仅为被动模式:只观察流量,不执行攻击。查看结果后,仅在需要时才转向主动扫描,并且只在测试环境中进行。