从前面的文章中可以看到,构建安全的应用程序需要大量的工作。
安全软件的一种捷径可以是利用应用程序框架的安全性功能。 如果正确使用.NET和Rails和Play以及Django和Yii等框架,它们会提供许多内置的安全保护。 查找资源,例如OWASP的.NET项目和.NET安全速查表 ,《 Ruby on Rails安全指南》 ,《 Play框架安全指南》 , Django的安全文档或《 如何编写安全的Yii应用程序》 ,Apple的《 安全编码指南》或Android的安全指南。开发人员以获取特定于框架的安全性最佳做法和指南。
框架提供的内容可能会存在漏洞,您可以使用Apache Shiro或Spring Security或OWASP全面(且重量级)的ESAPI等安全库以及Jasypt或Google KeyCzar的特殊用途库以及用于加密的Bouncy Castle和用于XSS保护以及免受其他类型注入保护的编码库 。
保持框架和库为最新
如果要使用其他人的代码,则还必须确保保持最新。 在过去的一年左右的时间里,备受瞩目的问题(包括2013年在Rails中出现的严重漏洞和最近的OpenSSL Heartbleed错误)清楚地表明,了解您在自己的系统中使用的所有开放源代码框架和库的重要性应用程序(包括运行时堆栈中的应用程序),并确保此代码没有任何已知的严重漏洞。
一段时间以来,我们已经知道流行的开源软件组件也是坏人的流行(且容易)攻击目标 。 而且我们对坏人来说太容易了。
Aspect Security和Sonatype在2012年进行的一项研究调查了1.13亿次最受欢迎的Java框架(包括Spring,Apache CXF,Hibernate,Apache Commons,Struts和Struts2,GWT,JSF,Tapestry和Velocity)的下载量,以及安全性库(包括Apache Shiro) ,Jasypt,ESAPI,BouncyCastle和AntiSamy)。 他们发现该软件中有37%包含已知漏洞,而且人们继续下载具有已知漏洞的过时版本的软件超过1/4。
这已经成为一个非常普遍和严重的问题,现在使用OWASP十大风险列表中的软件框架和其他具有已知漏洞的组件 。
查找具有已知漏洞的代码并进行修补-简单,对吗?
您可以使用OWASP的免费依赖关系检查之类的工具,也可以使用Sonatype CLM之类的商业工具来跟踪存储库中的开源组件,并标识包含已知漏洞的代码。
一旦发现问题,就必须修复它们,并Swift修复它们。 White Hat Security的研究表明,一旦发现漏洞,大多数Java应用程序中的严重安全漏洞平均需要91天才能修复。 这就给门敞开了很长时间,几乎可以保证坏人会介入。如果您对此代码不承担任何责任,最终可能会使应用程序的安全性降低而不是更加安全。
下一步:让我们回到开始,然后看看需求中的安全性。