每种测试形式的相对优势和缺点是什么?
也就是说,静态代码分析和运行时/动态渗透测试之间有什么区别?
每种方法的优缺点是什么?是否有一种比另一种更可取的情况?
发布于 2010-11-14 22:44:36
这里有一些非常好的答案,但我认为还有几点是很重要的:
发布于 2010-11-14 12:22:24
我相信这个问题最好在软件安全评估的艺术的第4章中解决,这本书是由Mark,Justin和John McDonald写的。
如果没有它作为参考,我可以安全地告诉您,最好的方法是使用运行时数据和源代码,同时使用黑匣子测试来确定“命中”(或跟踪,也就是覆盖范围) --但只有在系统的模型和一般体系结构都是众所周知的威胁之后。
作者似乎也喜欢将安全的静态代码分析与候选点策略相结合,尽管我认为,假设以下情况不正确,这些策略的价值可能会大不相同:
由于上述原因,以及NIST SATE研究(由NIST SAMATE完成)中提出的原因,我发现很难推荐许多安全的静态分析工具用于白盒分析。使用最有可能从上到下阅读源代码的代码理解策略几乎总是更好,如果您正在寻找托管代码、rootkit等,这是非常重要的。
而不是测试和审计/评估应用程序,我会采取一种不同的方法,在很大程度上是非常技术不可知论。我的建议是实现一个应用程序安全风险管理门户,其中包括一个应用程序清单以及每个应用程序当前实现的应用程序安全控制。在初始基线之后,应用程序安全控制应该根据行业标准(如MITRE、SAFEcode和OWASP )进行评估。差距分析(注意,这是一个标准的风险管理术语,并且在基于ISO 27001或类似标准的信息安全管理程序中实现时效果最好)然后可以用来确定最佳的应用程序安全控制,以及从当前实现的控制到所需的控制的路径。
在执行风险评估活动(如白盒或黑匣子测试)之前,您应该实现此风险管理门户,以便获得更好的结果,并衡量程序的成功程度。
发布于 2010-11-12 13:53:21
一般来说,白盒测试允许您深入源代码并执行完整的渗透测试,但这是非常耗时的,而黑匣子是简单、快速和简单的。我更喜欢灰色盒测试--使用黑匣子方法,并且只在应用程序的特定部分(身份验证、会话管理、配置管理,.)访问开发人员/检查源代码。
https://security.stackexchange.com/questions/214
复制相似问题