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