📜  SAST 和 DAST 的区别(1)

📅  最后修改于: 2023-12-03 15:19:55.894000             🧑  作者: Mango

SAST 和 DAST 的区别

SAST

SAST (Static Application Security Testing) 即静态应用程序安全测试,指的是在不运行应用程序的情况下对应用程序的源代码、字节码或目标代码进行安全漏洞扫描的方法,主要通过代码分析的方式进行。

具体而言,SAST 工具可以通过对代码逐行扫描,检测其中存在的各种安全漏洞,如 SQL 注入、XSS、代码注入等等。SAST 工具需要分析代码中的潜在漏洞及形成漏洞的编码方式,以帮助开发人员快速检测出漏洞,并进行修复。

SAST 的优点在于可以通过整理代码来挖掘潜在的漏洞,可以在开发过程中自动应用,节省了测试过程中的时间。

DAST

DAST (Dynamic Application Security Testing) 即动态应用程序安全测试,是一种将安全测试应用于正在运行的应用程序的测试方法,主要通过模拟攻击者攻击应用程序的方式进行。

DAST 工具可以通过在应用程序运行时对其进行攻击来检测安全漏洞,因此,它基本上是在现场对应用程序进行测试。DAST 工具倾向于表达所有可能的漏洞,无论它们是否真的会在实际应用中被利用。

DAST 的优点在于可以检测出实际应用中存在的漏洞,可检测出静态测试方法(如 SAST)无法检测到的漏洞。

SAST 和 DAST 的区别

在具体实践中,SAST 和 DAST 有各自的优点和缺点,应该根据实际应用场景进行选择。

  • SAST 工具需要分析应用程序的源代码或字节码,可以发现各种安全漏洞,但有可能会误报或漏报一些问题。在大型项目中,它可能会产生大量虚假报告,此时需要去除大量的虚假报告。

  • DAST 工具主要在应用程序的生产环境中运行,测试结果真实可信,但它只能在应用程序正在运行时才能检测出漏洞。

总结

SAST 和 DAST 的主要区别在于它们的测试方法和时机。SAST 工具主要在应用程序的开发过程中使用,而 DAST 工具主要在应用程序被部署在生产环境时进行测试。选择 SAST 或 DAST 取决于应用程序的特定安全测试场景,为了使应用程序更安全,建议采用两者结合的方法。