• 0
  • 0
分享

摘要:

        随着网络攻击不断制造恐慌,我们在数字领域的应用和数据面临的威胁也越来越大。互联世界中的企业需要认识到,安全测试对于他们的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应用程序的安全测试应该从制定一个完整的测试计划和评估可能的风险、攻击开始,以便制定最有效的测试。

        虽然自动化安全测试可以减轻工作量,使过程更快、更有效,但必须有人性化的理解和预测潜在黑客的思维过程。测试人员需要在测试工作中保持创造性,以确保用户在使用产品时的安全。


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 在测试行业,一个一直被讨论的问题就是:手工测试没有前途,自动化测试会取代手工测试?首先说结论:自动化测试不会取代手工测试,这完全是两个维度的事情。为什么不会呢?我们需要从本源上说起。手工测试没有前途,自动化测试会取代手工测试吗?什么是自动化世界上有很多职业,比如艺术家、维修人员、销售等等,每种职业都需要人来参与,而每种职业也都有部分工作交给机器来做。但无论哪种职业,几乎都是人来主导,然后将越来越多的工作交给机器来做,而机器无法实现的工作,比如创新、情感、思维等,只能由每个具体的人来完成。而这些必须由具体的人来完成的事情,我们称之为“手工”,机器完成的部分,我们称之为“自动化”。因此,手工、自动...
            0 0 742
            分享
          • 一、什么是 Monkey 测试Monkey 测试是通过向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对应用程序客户端的稳定性测试;通俗来说,Monkey 测试即“猴子测试”,是指像猴子一样,不知道程序的任何用户交互方面的知识,就对界面进行无目的、乱点乱按的操作;Monkey 测试是一种为了测试软件的稳定性、健壮性的快速有效的方法;Monkey 程序是 Android 系统自带的,由 Java 语言写成,在 Android 文件系统中的存放路径是:/s...
            6 6 2379
            分享
          • 也许大家在面试的时候碰到测试电梯,测试笔,测试伞的呀,小编就都罗列出来,大家可以看一看,碰到测试其他东西的,大家主要是思路,流程清晰就可以的。参考答案:伞功能测试伞是否可以正常打开,关闭,是否可以正常使用;伞是否可以折叠,伞的尺寸是否符合使用需求;伞骨与伞柄是否耐用,材质是否符合需求。是否生锈;伞的底座是否结实,是否容易脱落;伞是否能够正常遮阳/挡雨,伞面是否能够承受住风吹日晒。是否防紫外线;收伞的外部捆绑条,长度是否合适,是否结实,暗扣/粘扣的是否能够正常使用;自动伞是否可以正常使用,按钮承受度,使用次数。界面测试伞的类型是否符合需求,手动伞、自动伞;伞的外观、颜色、是否齐全、是否美观。易用...
            0 0 1062
            分享
          • 用Jmeter实现dubbo接口测试的文章,网上可以找到很多,但是只看不练假把式。废话不多说,直接上干货。写这篇文章的过程也是自己不断学习的过程。一、准备(1)自行下载安装zookeeper-3.4.6(这里的版本是我用的,可以自行下载自己喜好的版本)(2)自行下载apache-jmeter-3.1,这是免安装的,解压后\Jmeter\apache-jmeter-3.1\bin目录下执行jmeter.bat即可启动。(3)开发环境STS(即Spring Tool Suite)(4)dubbo-admin-2.4.1(这个是非必须的,主要是为了查看Dubbo的服务提供者和消费者) 二、...
            4 4 3214
            分享
          •   测试过程中,无论案例怎么设计、怎么执行,都需要测试人员有一定的敏感度去发现问题,测试人员的经验积累无论对于案例的设计、测试执行还是缺陷的发现都有很重要的意义,所以接下来我想给大家分享一些我自己在测试中遇到的经典或非经典场景。  1 需求了解不到位  有些问题其实并不算很难或很复杂,只是需要测试人员在测试前仔细阅读需求,明确需求要求实现的功能、需求给定的请求和应答报文字段、需求阐明的业务规则,所有需求里明确写了的内容在测试中应当务必保证覆盖。我在测试中遇到的问题有返回报文字段和需求不一致,业务规则要求取值范围大于等于固定值,在实现中变成了大于固定值等等情况。相关场景多是疏忽没有仔细阅读需求所...
            0 0 1201
            分享
      • 51testing软件测试圈微信