我开始使用内部应用程序的第一件事就是使用Fortify等工具对代码库进行安全性分析。
否则,您可能会考虑使用专门从事安全性的第三方公司的服务来测试您的应用程序
您遇到的任何人都有以下选择:
米切尔已经指出使用Fortify。事实上,Fortify有两个产品涵盖静态和动态分析领域 - SCA (静态分析工具,用于开发)和 PTA (在测试期间执行测试用例时执行应用程序分析)。
但是,没有任何工具是完美的,您最终可能会出现误报(代码库的碎片,虽然不会被标记为易受攻击)和漏报。只有代码审查才能解决这些问题。代码审查很昂贵 - 并非组织中的每个人都能够在安全专家的眼中审查代码。
首先,可以从OWASP开始。理解 安全背后的原则 在学习之前强烈建议 OWASP开发指南 (3.0在草案中; 2.0可以被认为是稳定的)。最后,你可以准备执行 首次扫描您的代码库 。
我可以建议你联系 Artec集团 , 安全指南针 和 Veracode的 并查看他们的产品......
的 最好的事情: 强>
的 以下工具将有助于: 强>
聘请一些安全专家是一个更好的想法(虽然会花费更多),因为他们不仅会找到自动化工具可能找到的注入和技术问题,他们也会发现所有逻辑问题。
测试和静态分析是查找安全漏洞的一种非常糟糕的方法,如果您在整个设计和实现过程中没有考虑安全性,那么这种方法确实是最后的手段。
问题是你现在正试图枚举你的应用程序失败的所有方法,并拒绝那些(通过修补),而不是试图指定你的应用程序应该做什么,并防止一切不是那样(通过防御性编程) )。由于你的应用程序可能有无限的出错方式,而且只有一些事情要做,所以你应该采取“默认拒绝”的方法,只允许使用好东西。
换句话说,构建控件以防止整个类别的典型漏洞(例如,参见其他答案中提到的OWASP)无论它们如何出现都比更容易和更有效,而不是寻找哪些特定的搞砸某些版本的代码有。你应该试图证明良好控制的存在(可以做到),而不是缺少坏东西(不能)。
如果你让某人检查你的设计和安全要求(你究竟想要保护什么?),完全访问代码和所有细节,这将比某种黑盒测试更有价值。因为如果你的设计是错误的,那么你实现它的程度并不重要。
我们用过 Telus公司 为我们进行几次笔测试并对结果印象深刻。