首页/安全/漏洞与攻击面速查/SAST/DAST/IAST/SCA 方法定位
扫描与验证方法50 条

SAST/DAST/IAST/SCA 方法定位

不同测试方法看问题的角度不同:SAST 看源码缺陷、DAST 模拟外部行为、IAST 结合运行时插桩、SCA 看依赖成分;覆盖互补,不能互相替代。

漏洞与攻击面速查安全更新于 2026-10-13

四种方法各看什么

SAST 读源代码或字节码找缺陷模式,DAST 从外部测试运行中的服务,IAST 在运行期插桩观察数据流,SCA 比对项目依赖中的已知组件问题。四者的输入与时机都不同,覆盖不同层面的风险,是互补关系而不是替代关系。

基本信息

SAST输入源码/字节码,编码阶段,缺陷定位到行
DAST输入运行中的服务,测试阶段,贴近真实暴露面
IAST运行时插桩,测试或预发环境,告警带数据流
SCA依赖清单与锁文件,构建阶段,关注第三方组件
共同要求结果要去重、定级、进同一台账

典型使用场景

  • 提交门禁:SAST 与 SCA 在合并请求阶段拦截明显缺陷与高危依赖
  • 版本发布前:DAST 对预发环境做一轮外部视角检查
  • 复杂逻辑验证:对权限与支付链路用 IAST 观察真实数据流
  • 依赖治理:SCA 发现组件漏洞后,推动升级或替换依赖
  • 方法组合:把四类结果按资产与问题类型聚合,避免同一问题反复派单

流水线位置示意

流水线位置示意
编码提交  → SAST(快速规则集,失败即阻断)+ SCA(依赖清单比对)
构建产物  → SCA(对打包产物复扫,避免开发依赖干扰)
测试环境  → DAST(认证态扫描,覆盖登录后路径)
预发环境  → IAST(插桩验证可疑数据流,降误报)
上线后    → DAST 复测 + 外部暴露面扫描

方法对比

方法输入优势局限
SAST源代码或字节码能定位到代码行误报较多,难覆盖运行期逻辑
DAST运行中的服务贴近真实暴露面登录后逻辑与深路径覆盖有限
IAST运行时插桩定位准、误报低需部署插桩,环境要求高
SCA依赖清单发现第三方组件问题依赖清单与产物范围常不一致
SCA 结果要和实际打包产物核对:开发依赖与运行产物中包含的组件范围常不一致,只扫源码清单会漏掉被间接引入的组件。
四种方法的输出要进同一台账并统一去重,否则同一问题会在 SAST、DAST、SCA 里各报一次,修复方看到三条工单却只有一处代码要改。

易错点

  • 把 SAST 单次扫描当作发布门禁的全部:运行期与依赖风险无人负责
  • 只看扫描数量不看处置率:报告越堆越厚,修复率毫无变化
  • 在预发环境跑 DAST 却使用生产数据:扫描行为直接污染真实数据
  • 把 IAST 插桩部署到生产:性能与稳定性风险高于收益,应放测试或预发

数据来源与参考

  • OWASP 文档(SAST/DAST 说明)
  • OWASP Dependency-Check 项目文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌