> 文章列表 > Web安全之SAST和DAST(静态和动态应用程序安全测试)详解

Web安全之SAST和DAST(静态和动态应用程序安全测试)详解

Web安全之SAST和DAST(静态和动态应用程序安全测试)详解

SAST和DAST都是应用程序安全测试方法,用于发现应用程序的潜在安全问题。

什么是SAST?

SAST(static application security testing),静态应用程序安全测试,是一种白盒测试方法。通过检查代码以发现软件缺陷和安全漏洞,SAST是在软件开发生命周期(SDLC)的早期阶段(可以理解为编码阶段)发现代码漏洞,由于SAST是通过扫描源代码发现漏洞,所以能够精确给出存在漏洞的代码行。

什么是DAST?

DAST(dynamic application security testing),动态应用程序安全测试,是一种黑盒测试方法。在应用程序运行时对应用程序进行安全检查,以发现可能被攻击者利用的漏洞。DAST是在软件开发生命周期(SDLC)的中后阶段(可以理解为运行阶段)发现代码漏洞,由于DAST不扫描源代码,所以通常不能给出存在漏洞的具体代码位置。

SAST和DAST有什么区别?

通过上面的定义可以看出SAST和DAST是不同的测试方法,用于发现不同类型的漏洞,并且是在软件开发生命周期的不同阶段做的。SAST应该尽早执行,并且要针对全量源代码文件执行。DAST应该在类似于生产环境(预发布环境或者验收环境)中运行中的应用程序上执行。可以看出,SAST和DAST都做才能达到较好的安全效果。

如下列表是SAST和DAST一些具体的不同点:

SAST

DAST

白盒安全测试方法,测试人员在了解设计和实现方法的情况下,由内到外进行测试。

黑盒安全测试方法,测试人员不了解应用程序的技术或框架,从外到内进行测试。

需要源代码,通过扫描源代码方式实现。

需要程序在运行中,在应用程序运行时对应用程序进行安全测试。

在软件开发生命周期(SDLC)的早期阶段发现代码漏洞。

在软件开发生命周期中后阶段发现代码漏洞。

修复漏洞成本低,由于在开发周期中较早地发现了漏洞,因此修复起来更快更容易。

修复漏洞成本较高,由于漏洞是在开发周期的末尾发现的,漏洞修复往往会被放到下一次迭代。

不能发现与运行时和环境相关的问题。

可以发现运行时和环境相关的问题。

适用于各种应用程序。

只适用web应用程序和web服务等应用程序。

小结

SAST主要用于发现编码阶段的安全问题,DAST主要用于发现运行阶段的安全问题。在实际应用中,最好把SAST和DAST都做掉以提高应用程序的安全性。