首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >静态分析和动态分析有什么区别?

静态分析和动态分析有什么区别?
EN

Stack Overflow用户
提问于 2020-07-07 17:48:51
回答 2查看 391关注 0票数 1

静态分析和动态分析在网络安全方面有什么区别?

EN

回答 2

Stack Overflow用户

发布于 2020-07-07 18:11:46

静态分析的意思是“读取源代码并尝试识别故障”。为了安全性,静态分析工具试图在代码中找到安全漏洞,这些漏洞可能在代码发布供生产使用之前就已经修复了。

动态分析的意思是“观察应用程序的实际执行以识别失败(例如,deref空指针、数组访问超过数组结束、重新使用动态分配的块而不首先释放它,……”)。在应用程序开发和调试期间,它可以找到错误,这些错误可能在代码发布用于生产之前就已经修复了。在生产执行过程中,它可能会检测到软件即将产生的错误,并防止这些错误(例如,不实际执行deref,而是报告应用程序错误),代价是由于动态分析的侵入性,执行成本要高得多。

每一个都有不同的长处和弱点。这两种技术都存在图灵导致的无法完全推理软件活动的问题。大多数这些工具都有失败之处,它们忽略了问题,或者报告了不真实的问题。通常,这些工具试图避免报告错误,因为人们不会使用工具产生大量这样的错误。限制假阳性也会限制真实错误的报告,所以你不能确定一个干净的报告意味着“没有问题”。

票数 1
EN

Stack Overflow用户

发布于 2022-11-10 21:45:49

这两种类型的软件测试都在寻找非预期的安全漏洞。因此,它们与单元或系统测试是分开的,后者侧重于验证预期的结果或需求。

静态分析(SAST)工作在代码级别。它是代码扫描,寻找已知漏洞的模式或糟糕的编码实践。例如,扫描代码以发现不安全库的使用。

动态分析(DAST)工作在编译的系统级别上。它扫描构建的系统,寻找已知的漏洞。例如,通过其前端扫描web应用程序以查找跨站点脚本漏洞。

这两种方法都是在SDLC预释放期间使用的.SAST倾向于在DAST的左边,并且可以更早地处理问题,但是,两者都不能完全有效地处理所有问题,而且两者都容易出现错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62781087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档