我们计划构建一个需要高度安全的Web应用程序,因为大量的资金和声誉都存在风险。因此,我正在寻找有助于这项努力的工具和技术。这些工具和技术应该有助于防止SQL注入,跨站点脚本漏洞,远程代码执行等问题。
我们的团队对此类漏洞有扎实的了解。但是每个开发人员都会犯错误,而一个简单的错误不应该导致安全漏洞。应该通过Web应用程序框架,应用程序服务器,编程语言,安全库,代码分析器等来预防或检测它们。
一个简单的例子:如果您将数据插入HTML,则需要对其进行转义,以便正确显示并且不会因注入脚本而被滥用。一些Web应用程序框架会给开发人员带来负担。如果他们忘记在一个地方逃跑,他们就会遇到安全问题。一个好的工具不仅可以自动进行转义,甚至可以阻止开发人员强行执行。
我不正在寻找有关防火墙的建议(我们有一个好的),强化操作系统(这是计划的一部分),使用加密通信(它将是唯一的选项)和安全认证(将使用硬件令牌)。相反,建议应以应用服务器和要构建的Web应用程序软件为中心。
我们也完全理解编写安全软件不仅仅是技术:它涉及知识渊博的人,管理层的关注,时间和金钱以及软件质量流程。到目前为止,这不是问题,也不是这个问题的焦点。
我应该提一下,我们对Java和.NET有一定的偏见。
那么您可以向我们推荐哪些工具和技术或其组合?
答案 0 :(得分:13)
答案 1 :(得分:4)
我最好的建议是要求对所有编写的代码进行结对编程或代码审查。作为单个开发人员很容易错过某些内容或忘记安全措施 - 但如果发生这种情况,应该在代码审查中获取,特别是当审阅者意识到安全对应用程序至关重要时。
就工具而言,结帐Google Skipfish。它允许您针对应用程序运行一整套测试,告诉您哪些地方可能需要您注意。
答案 2 :(得分:1)
没有任何测试可以比处于开发团队中的人更好地检测到循环漏洞。
风险存在标准产品
例如,大多数攻击来自开源系统,标准产品是简单猜测的一部分,如果你使用WordPress,如果任何PHP脚本可能导致sql注入攻击,那么你的网站可能很容易被攻击。
自定义开发软件只要......
就是安全的最重要的是,您的业务逻辑(即使是最小的业务逻辑,如登录和注册)应该且只应在您的受控场所执行。
任何不在您的场所,任何网络浏览器,任何移动客户端的东西,都认为这是危险的,然后是代码。
团队战争
划分您的团队,并告诉团队攻击并关闭或破解其他团队的代码,作为测试的一部分,请始终记住,了解您的业务逻辑,访问位置的人比任何现有的病毒或特洛伊木马更危险网络攻击者。
答案 3 :(得分:1)
安全是质量的一个方面,质量取决于您的流程,而不是您的工具(为流程服务)。
具体而言,如果您想构建高度安全的Web应用程序,则需要采用安全的开发流程,例如OWASP ASVS或Microsoft SDL
此blog post更多地解释了为什么安全性更像是一个流程问题,而不是工具或培训问题。
答案 4 :(得分:0)
最好与办公室以外的人一起测试您的网络应用程序,例如Google的受信任测试人员,此外还有专门的安全顾问。他们可能会用开箱即用的想法进行测试,并提出大量的漏洞,并且有时建议你做好实施。
答案 5 :(得分:0)
您可以使用Websecirify工具对Web应用程序进行安全性测试。 http://www.websecurify.com/
此工具可以检测各种安全漏洞。其中包括: