参与互联世界的企业需要认识到安全测试是对其web应用程序至关重要的关键因素。这些企业应该在项目一 开始就设计先进的、全面的安全测试计划,以确保安全的用户体验。
以下是你可以开始的方法。
一、寻找潜在的安全漏洞
第一步是检查代码中任何可能的漏洞。有几个常见的安全漏洞领域:
隐藏字段操作:此漏洞主要用于电子商务网站。应用程序会在网页中嵌入隐藏字段,由于编码标准差,这些隐藏 字段通常包含机密信息,如产品价格。
跨站脚本攻击:这是最常见的漏洞之一。它会让黑客销穷取会话、篡改页面、嵌入内容或将用户重定向到恶意网站。
跨站请求伪造:许多开发人员忽略了随机令牌和那些包含重重要数据的页面的重新认证的重要性。没有它们,攻击者 可以代表用户执行操作,如添加或删除帐户受益人或修改用户配置文件。
二、逐步执行安全测试
让我们考虑一个场景,一家公司需要对其在ASP.NET构建的应应用程序进行安全测试。对测试团队的期望是什 么?这里有一个循序渐进的方法,可以捕获需求的解决方案。
1.计划和策略
制定计划和策略应该始终是安全测试的第一步。测试人员必须了解业务背景、访问应用程序的用户数量以及 应用程序的工作流程,以便确定每个场景的具体测试内容。
在执行任何项目之前,最好与开发人员举行一次会议,以了解应用程序的流程。这有助于测试人员识别自动 化工具无法识别的逻辑漏洞,例如授权旁路。
企业应该对有多少用户会访问该应用程序有一个大概的数字。了解用户的最大数量有助于测试人员生成虚拟 用户来识别任何可能的拒绝服务攻击。如今,这些攻击很眼容易被利用。
2.进行威胁建模
对应用程序的高级威胁进行建模,可以让测试人员评估可能的的风险和与之相关的场景。威胁建模确定了应用 程序的薄弱环节,这有助于进行针对性的测试。
在应用程序的蓝图完成之后,技术部分开始了,开发的部件t也被定义好了。它可能是编码语言、平台、技术 栈等等。每个部件都有自己的弱点和优点,因此在编码阶段之前识别漏洞非常重要。这有助于确定其他更安全的的选 项,并大大降低修复这些选项的成本。
例如,如果应用程序是在.NET中,了解支持应用程序的各种部件中存在的漏洞是很重要的,例如.NET版本, IIS版本等。这有助于识别业务和架构威胁。
3.选择测试工具
为了评估应用程序,必须使用合适的工具。每一个开源和专业工具都有它的优点和缺点,所以工具应该选择 最适合的那个。像Zed攻击代理和Nmap等开源工具也允许测试人员修改自定义脚本。
4.发挥测试的创造性
尽管您应该使用自动化工具来执行一些安全测试,但是随着着黑客变得越来越聪明,人类在测试中跳出思维定 势也是很重要的。识别逻辑漏洞是经验丰富的测试人员和普通测试人员的区别。
例如,当涉及到HTTP访问控制时,据报道CORS机制具有较低的信息漏洞,但是如果它与CSRF结合使用, 将会对应用程序产生巨大的影响。这个已经从欧洲的一家大大银行那里得到了验证。另一个例子是通过主机头攻击接 管帐户。在请求密码重置链接时,哪怕简单地更改主机名都可能会造成损害,因为链接的其余部分将拥有攻击者的 域,他们可能会访问您帐户的密码。当开发人员忘记限制密码重置链接的重用时,可能会发生这种情况,但一个聪 明的测试人员会知道该怎么做。
5.考虑每一步的安全性
当手动对web应用程序进行安全测试时,可能会将测试限制在选择特定的、明显的参数上,但自动化web漏洞 扫描器可以确保对每个参数进行扫描以发现漏洞。然而,将安全性集成为贵穿软件开发生命周期的过程将确保应用 程序更安全地发布,因为大多数缺陷将在非常早期的阶段没现并被解决
一旦开发完成,并利用Jenkins或任何自动化框架为测试中的应用程序构建代码,安全测试就可以自动化,IP 和URL可以动态地提供给Zed Attack Proxy或w3af等开源工具或许多其他商业工具。