首页/开发/CI/CD 与发布速查/SAST 与 DAST 安全扫描门禁
质量门禁与回滚51 条

SAST 与 DAST 安全扫描门禁

SAST 在源码层面发现缺陷模式,DAST 在运行环境模拟外部访问行为;两者发现的问题按严重级与可利用性分级,高危项进入阻断集合。

CI/CD 与发布速查开发更新于 2026-10-13

SAST 与 DAST 是什么

SAST 在源码层面发现缺陷模式,DAST 在运行环境模拟外部访问行为发现可被利用的问题;两者结果按严重级与可利用性分级,高危项进入阻断集合。SAST 覆盖代码与依赖,速度快、误报相对多;DAST 覆盖真实运行时行为,需要可访问的测试环境,通常安排在环境部署之后执行。

基本信息

SAST 输入源码、依赖与配置,工具如 CodeQL、Semgrep
DAST 输入可访问的测试环境地址,工具如 OWASP ZAP
执行时机静态扫描在提交与合并阶段,动态扫描在部署测试环境后
分级严重与高危阻断,中低危限期整改
误报处理登记豁免并注明理由与复核日期
运行频率静态扫描按提交触发,动态扫描按发布窗口或每日定时
结果去向报告归档并关联整改工单,处理有闭环

两类扫描对比

维度SASTDAST
输入源码与依赖清单运行中的测试环境
发现缺陷模式与不安全写法可被利用的运行时问题
优点覆盖全,能定位到行贴近真实攻击面
局限误报需要人工确认覆盖率依赖爬取与用例

扫描接入示例

扫描接入示例
# 代码扫描:提交与合并阶段运行
- uses: github/codeql-action/init@v3
  with:
    languages: javascript-typescript
- uses: github/codeql-action/analyze@v3
# 动态扫描:测试环境部署后运行
- run: zap-baseline.py -t https://staging.example.com
  # 高危结果使作业失败,进入阻断集合

典型使用场景

  • 合并门禁:PR 阶段跑增量扫描,高危问题直接阻断合并
  • 发布前检查:测试环境部署后跑基线动态扫描,覆盖常见 Web 风险
  • 依赖审查:结合依赖清单扫描已知漏洞版本
  • 整改跟踪:中低危问题限期修复,扫描报告与工单系统联动
  • 上线取证:保留扫描报告作为安全审核的凭据
DAST 只对授权的测试环境运行:对生产或第三方系统扫描可能违反授权与法规。
豁免要有到期日:登记豁免并定期复核,避免「永久忽略」长期失控。

易错点

  • 只扫描不建分级处理规则:报告积压,扫描沦为形式
  • 把已知高危设为永久忽略:缺少复核日期会长期失控
  • 扫描放在合并之后:问题在代码入库后才暴露,修复成本上升
  • 动态扫描对登录后路径覆盖不足:只扫公开页面导致问题漏检

数据来源与参考

  • GitHub Docs《Code scanning》
  • OWASP ZAP 文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌