应用安全测试:双面的黑盒
作者:网络转载 发布时间:[ 2014/9/18 13:15:11 ] 推荐标签:软件测试 功能测试
如何应用常见的验证方法:
自动化运行期测试:通过访问两个不同用户数据的方式,使用一个用户的账号尝试访问另一个用户的数据,自动化工具能够在一定程度上完成本需求的测试。然而,这些工具不可能清楚一个用户账号的哪些数据是敏感的,也不了解把参数“data=account1”修改为“data=account2”表示违反了授权。
手工运行期测试:通常情况下,手工运行期测试是发现这类漏洞有效的方法,因为人可以拥有必需的领域知识以探明这类攻击的位置。然而,在有些情况下,运行期测试人员可能无法全面掌握发现这类缺陷所必需的一切信息。例如,如果附加一个类似于“admin=true”的隐藏参数,使你可以不需授权检查能访问其他用户的数据。
自动化静态分析:如果没有规则的定制,自动化工具通常发现不了这种类型的漏洞,因为它需要对领域的理解能力。例如,静态分析工具不清楚“data”参数表示条件信息,需要授权检查。
手工代码审查:手工代码审查能够揭露缺失授权的实体(译者注,比如代码),这是使用运行期测试难以发现的,比如添加一个“admin=true”的参数的影响。但是,实际上采用这种方式去验证是否做了授权检查费时费力。一处授权检查可能出现在许多不同部分的代码中,所以手工审查人员可能需要从头到尾追踪数条不同的执行路径,以检测是否做了授权。
对你的影响
验证的不透明的本质,意味着有效的软件安全需求的管理是必要的。对于已列出的需求,测试人员即可以明确他们已经评估一条具体的需求,也可以明确他们所用到的技术。评论家提出,渗透测试不应该遵循一张“类似于审计的检查表”,因为没有检查表可以覆盖模糊的范围和特定领域的漏洞。但是,要灵活地找到独特的问题,不可避免地要确定已经充分理解了需求。这种情况与标准的软件质量保证(QA)非常相似:好的质保测试人员即能够验证功能需求,也能够思考盒子的边界,想办法去破坏功能。如果只是简单、盲目地测试,报告一些与功能需求无关的缺陷,会显著降低质量保证的效用。那么为什么要接受较低标准的安全测试呢?
在你执行下一次安全验证活动之前,确保你有软件安全需求可用于衡量,并且你要明确属于验证范围内的需求。如果你雇佣手工渗透测试人员或源代码审查人员,他们可以相对轻松地确定哪些需求是由他们来测试的。如果你使用某种自动化工具或服务,合作的供应商会表明,哪些需求无法用他们的工具或服务可靠地测试。你的测试人员、产品或服务不可能保证完全没有假阴性错误(例如,保证你的应用中不会受到SQL注入攻击),但同时也要理解,对它们做测试能够大大有助于增加你的自信心,有信心你的系统代码中不包含已知的、可预防的安全漏洞。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11热门文章
常见的移动App Bug??崩溃的测试用例设计如何用Jmeter做压力测试QC使用说明APP压力测试入门教程移动app测试中的主要问题jenkins+testng+ant+webdriver持续集成测试使用JMeter进行HTTP负载测试Selenium 2.0 WebDriver 使用指南