乐趣区

关于安全:代码质量与安全-SAST与DAST有什么区别

动态应用程序平安测试(SAST)和动静应用程序平安测试(DAST)都有助于确保您的软件平安并防备破绽,这使得 DevSecOps 过程更容易。本篇文章解释了 SAST 与 DAST 之间的区别,帮忙您更好地理解它们别离应该在何时应用。

SAST 与 DAST 的次要差别

这两种工具都是用于辨认软件安全漏洞的,然而,它们的工作形式十分不同。每种办法都有不同的长处,能够找到不同类型的破绽,具体取决于您处于软件开发过程中什么阶段。在现实的状况下,您会心愿在平安测试工具包中同时应用这两种工具,并理解如何最好地独自和联合应用它们。

动态应用程序平安测试(SAST)通常在软件开发过程的晚期检测安全漏洞,并能够精确定位这些问题的确切地位,提供无关破绽重大水平的详细信息。这为开发人员节俭了大量工夫,把他们从手动查找、修复问题的麻烦中援救进去。

动静应用程序平安测试(DAST)通常在开发过程的前期进行,剖析处于动静(或运行)状态的应用程序。这种类型的测试可帮忙开发人员从用户的角度理解应用程序如何运行,而不须要理解软件的工作原理及其背地的编程理念。在不同的利用程序运行时,DAST 大范畴地测试输出和输入,动静地检测它们的破绽。

现实状况下,SAST 和 DAST 应该一起应用,以便在整个软件开发生命周期(SDLC)中笼罩尽可能多的破绽。为了让您理解何时以及如何将每种测试方法的作用施展到最大,以下将论述 SAST 与 DAST 之间最显著的差别。

何时应该应用 SAST 而不是 DAST

您须要理解:

白盒平安测试

SAST 通常被称为白盒平安测试,这意味着开发人员能够拜访软件的底层框架、设计和施行状况。SAST 工具会从内到外测试软件,帮忙开发人员打消对于应用行业标准的偏见,并找出您在可预测故障条件之外可能未思考到的问题。

预编码签入查看

作为继续集成(CI)最佳实际的一部分,在提交代码之前就执行预编码签入让您能够共享和接管反馈,以及在 SDLC 晚期继续测试更改。当在集成开发环境中运行预编码签入查看时,SAST 工具可能自动化执行此过程,疾速查找出 bug,以便轻松修复它们,并放弃高质量的代码。

Jenkins 流水线品质门限查看

在 流水线中构建品质门限,确保在您有机会解决这些问题之前,重要故障不会先进入下一个步骤。您能够增加动态剖析作为品质门限查看标记的一部分,并应用 SAST 工具来帮忙您确定品质门限的规范,以及查找导致品质门限失败的谬误。

夜间扫描

SAST 能够在软件开发的所有阶段执行,包含服务器夜间构建。夜间动态剖析扫描是继续监控代码运行情况的好办法,当您来到办公桌时,更彻底的 SAST 剖析能够辨认您可能错过的破绽,让您有工夫在工作工夫修复它们。

必须有源代码

这种类型的工具不须要您运行软件来剖析其破绽。相同,它会剖析您的源代码、字节码和二进制文件,无需执行任何内容,还将提供最疾速反馈且只须要起码的工作量。

在开发晚期发现破绽,修复老本较低

这种类型的工具可能在您写代码时扫描它。这有助于确保尽快辨认安全漏洞和编码谬误,也使得解决这些问题更容易、更快、老本更低。

无奈辨认与工夫和环境相干的问题

因为此类工具扫描的是动态代码,因而它无奈辨认与工夫和环境相干的破绽。

通常反对所有类型的软件

您能够应用这种类型的工具来剖析大多数类型的软件,包含嵌入式软件、企业应用程序、挪动应用程序、Web 应用程序和 Web 服务。

△ SAST 与 DAST 之间的差别

何时应用 DAST 而不是 SAST

以下是您须要理解的内容:

黑盒平安测试

与 SAST 相同,DAST 通常被称为黑盒平安测试,从外到内测试应用程序。您无权拜访软件的底层框架、设计和施行状况,因而外部细节是含糊的。这种测试方法能够帮忙您理解不良行为者可能的入侵形式。

须要一个运行中的应用程序

DAST 工具要求您运行软件来剖析其破绽。

在开发前期发现破绽,修复老本更高

DAST 工具只剖析能够编译和运行的软件,这意味着它只能在开发前期辨认破绽。这使得修复谬误变得更加艰难、耗时,因而老本更高。

可能辨认与工夫和环境相干的问题

因为 DAST 工具应用动态分析来查看您的软件,因而它可能辨认与工夫和环境相干的问题。

SAST 的劣势是什么?

以下是这类工具的次要长处:

  • 通过查找国内公认的平安、防备和品质编码标准已知破绽的形式来发现问题;
  • 晚期缺点检测和修复,从而升高修复老本;
  • 左移办法——随时随地提供剖析,包含开发人员桌面和 CI/CD 流水线;
  • 易于自动化、可扩大并主动提供最高级别的代码覆盖率;
  • 反馈速度很快,并提供破绽的确切地位及其起因。

DAST 的劣势是什么?

以下是这类工具的次要长处:

  • 利用程序运行时,在整个零碎环境中,对其进行整体剖析;
  • “透视”应用程序外部,动态分析执行逻辑和实时数据;
  • 独立于语言和源代码;
  • 查看内存耗费和资源应用状况;
  • 尝试从内部破解加密算法;
  • 验证权限以确保隔离权限级别;
  • 查看跨站点脚本、SQL 注入和 Cookie 操作;
  • 测试第三方界面中的破绽;
  • 了解参数和函数调用;
  • 记录应用程序执行,用于预先测试失败剖析;
  • 捕捉硬应用程序故障;
  • 基于脚本、无人参加的动态分析。

将两者联合用于您的平安打算

作为无效平安打算的一部分,SAST 和 DAST 应该一起应用,因为它们可能辨认对方可能无奈辨认的破绽。

SAST 在开发晚期测试源代码。越来越多的企业正在将 SAST 测试整合到其 CI 和 CD 流水线中,以便他们尽早并常常发现源代码破绽。

DAST 无法访问源代码,而是在软件曾经运行时对其进行测试,发现歹意行为者可能试图利用的安全漏洞。

然而,没有哪种测试方法在实质上比另一种更好。为了进行全面的应用程序平安测试,两者都是必须的。应用 SAST 和 DAST 自动化工具将这两种测试方法集成到您的流水线中,有助于确保代码平安,而不会就义代码品质或交付工夫。

应用 Perforce SAST 工具 Klocwork,确保软件平安和我的项目胜利

Perforce 提供用于 C、C++、C#、Java、JavaScript、Python 和 Kotlin 的 SAST 工具 Klocwork,能够帮忙您在晚期辨认平安、品质和可靠性问题,强制恪守编码标准,确保代码免受安全漏洞的影响,且升高修复老本。Klocwork 的设计易于扩大到任何规模的我的项目,进步您在编写代码时主动进行源代码剖析的能力。

文章起源:http://bit.ly/3J5hVRh

退出移动版