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

What is the difference between static analysis and dynamic analysis?


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

静态分析意味着“阅读源代码并尝试识别故障”。为了安全起见,静态分析工具试图在代码中找到安全漏洞,然后大概在代码发布用于生产之前修复这些漏洞。

动态分析意味着“观察应用程序的实际执行以识别故障(例如,deref 空指针、数组访问越过数组末尾、重新使用动态分配的块而不先释放它,... ”。在应用程序开发和调试期间完成,它可以发现错误,然后可能在代码发布用于生产之前修复这些错误。在生产执行期间完成,它可以检测软件将要产生的错误,并防止这些错误(例如,不要'实际上不执行 deref,而是报告应用程序错误),由于动态分析的侵入性,以相当高的执行成本为代价。

每个人都有不同的长处和短处。这两种技术都受到图灵诱导的无法完全推理软件活动的影响。这些工具中的大多数都存在遗漏问题或报告不真实问题的缺陷。通常这些工具会尽量避免报告误报,因为人们不会使用会产生大量此类错误的工具。限制误报往往也会限制真实错误的报告,因此您不能确定干净的报告就意味着“没有问题”。