请解释 SAST 和 DAST 的含义,并阐述它们之间的主要差异。
考察说明
考查对静态应用安全测试与动态应用安全测试两类安全测试技术的定义理解及其区别的掌握程度。
回答思路
- 【回答框架 1】SAST 即静态应用安全测试,是在不运行程序的情况下对源代码、字节码或二进制文件进行扫描,通过模式匹配、数据流分析等技术识别代码中的安全缺陷,如 SQL 注入、XSS 等,属于白盒测试,通常在开发阶段使用,能快速定位问题但可能产生较多误报。
- 【回答框架 2】DAST 即动态应用安全测试,是在程序运行状态下通过模拟攻击向应用发送请求并分析响应来发现漏洞,属于黑盒测试,通常在测试或生产环境使用,能发现运行时配置、认证授权等真实可利用的漏洞,误报较低但覆盖有限。
- 【回答框架 3】两者的区别主要体现在:检测阶段不同、测试方法不同、对代码的依赖不同、漏洞类型覆盖不同以及误报率不同。SAST 偏左移,集成到 CI/CD 早期;DAST 偏右移,更接近实际攻击场景。
- 【回答框架 4】实际应用中两者互补,通常结合使用:CI 中先用 SAST 快速发现代码缺陷,再在测试环境用 DAST 做深度渗透,以覆盖不同漏洞类别并降低整体风险,同时配合人工审计和利用场景验证。
- 【关键点 1】SAST 针对源代码进行静态分析,无需运行应用,属于白盒测试。
- 【关键点 2】DAST 在应用运行时模拟攻击,属于黑盒测试。
- 【关键点 3】SAST 误报率相对较高,DAST 更易发现可实际利用的漏洞。
- 【关键点 4】两者应结合使用,覆盖软件开发全生命周期。
- 【易错点 1】将 SAST 误以为只能检测已知代码模式,而忽略数据流分析可发现更隐蔽的漏洞。
- 【易错点 2】误将 DAST 等同于渗透测试,实际上 DAST 是自动化工具,渗透测试包含人工操作。
- 【易错点 3】忽略 SAST 和 DAST 的集成时机,可能导致错过最佳修复窗口。