安全测试的概念

①安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。它一般是在产品开发基本完成到产品的发布阶段才会去做的一件事情,这是一个普遍现象;但其实安全应该提前到更早,在设计阶段就应该把安全考虑进去,在设计的时候就验证产品的安全等级是什么样子,在最终实现的过程中再去一步步检验安全是不是达到了设计的标准

②安全测试属于产品的安全需求定义书里定义的内容,也符合行业的质量标准,属于非功能需求的检验范畴,有时候我们的需求文档里可能都不体现安全,只说系统需要具备安全性,至于安全性是什么水平不明说,遵循什么样的国际标准或者国家标准也不明说,这个就需要安全从业人员去推广,或者通过培训,让公司、团队有安全意识。慢慢把这部分内容补充进去,才有的检验,否则所谓的安全性就没有一个参考标准,那也就毫无意义了。

③安全测试与普通的测试有一些区别,功能测试是保证产品能够正常工作,输入A可以出来A的结果,输入B可以出来B的结果;但是安全问题是你可能输入的是%、输入的是*或者是“or 1=1”这种特殊的构造字符串,它能绕过程序设计逻辑,导致程序给用户暴露了不该暴露的数据

④我们一般认为大公司或者国外领先的公司的安全性是不错的,但其实也不一定,就像facebook它会暴漏个人隐私。我们知道个人隐私不属于程序设计方面的问题,但是在收集使用过程中它仍然属于安全,这种是数据的安全,数据的使用安全跟数据的收集安全,这也是国家从去年到今年一直在严厉打击的。非法收集公民个人信息,包括快递信息,家庭住址、电话...包括身份证的正反面、手持身份证的照片等信息,收集之后就有保管、保证其安全不泄露的义务。这些都是功能测试里面所没有的,功能测试只是保证功能可以正常运转,上传一张手持身份证照片,上传完成后提示上传成功,但是上传成功之后,能不能被窃取到,安全测试去检查,不是功能测试检查的范畴。

⑤安全测试与功能测试的不同之处:

目标不同:测试以发现BUG为目标,安全测试以发现安全隐患为目标。

假设条件不同:测试假设导致问题的数据是用户不小心造成的,接口一般只考虑用户界面。安全测试假设导致问题的数据是攻击者处心积虑构造的,需要考虑所有可能的攻击途径。

思考域不同:测试以系统所具有的功能为思考域。安全测试的思考域不但包括系统的功能,还有系统的机制、外部环境、应用与数据自身安全风险与安全属性等。

问题发现模式不同:测试以违反功能定义为判断依据。安全测试以违反权限与能力的约束为判断依据。

⑥安全测试与渗透测试的差异之处:

出发点差异:渗透测试是以成功入侵系统,证明系统存在安全问题为出发点;而安全测试则是以发现系统所有可能的安全隐患为出发点。

视角差异:渗透测试是以攻击者的角度来看待和思考问题,安全测试则是站在防护者角度思考问题,尽量发现所有可能被攻击者利用的安全隐患,并指导其进行修复。

覆盖性差异:渗透测试只选取几个点作为测试的目标,而安全测试是在分析系统架构并找出系统所有可能的攻击界面后进行的具有完备性的测试。

成本差异:安全测试需要对系统的功能、系统所采用的技术以及系统的架构等进行分析,所以较渗透测试需要投入更多的时间和人力。

解决方案差异:渗透测试无法提供有针对性的解决方案;而安全测试会站在开发者的角度分析问题的成因,提供更有效的解决方案。

⑦安全测试的方法:

模式匹配方法:将程序看作字符串

状态机模型:将程序看作状态机

黑盒模型:将程序看作黑盒子

白盒模型:将程序看作路径的组合

⑧安全测试的难处:

测试理论很难适用于安全领域;

安全测试基础理论薄弱,当前测试方法缺少理论指导,也缺乏技术产品工具 。

安全测试与渗透测试的区别

①安全测试不同于渗透测试,渗透测试侧重于几个点的穿透攻击,而安全测试是侧重于对安全威胁的建模,系统的对来自各个方面,各个层面威胁的全面考量

②安全测试可以告诉你你的系统可能会遭受来自哪个方面的威胁,正在遭受哪些威胁,以及你的系统已经可以抵御什么样的威胁。

③安全测试涵盖渗透测试的部分内容,安全测试与渗透测试的区别主要在:渗透测试考虑的是以黑客方法,从单点上找到利用途径,证明你有问题,帮助客户提高认识,也能解决急迫的一些问题,但无法也不能去针对系统做完备性的安全测试,所以难以解决系统自身实质性的安全问题,所以提供渗透测试的厂商一般都是自己买什么防护设备,以自己防护设备针对的威胁为主要渗透点,找到你有类似的问题,解决方案就以卖对应的防护设备作为手段,针对具体的威胁,通过防护设备采取被动的防护。而安全测试,则从整体系统架构,安全编码,安全测试,安全测试覆盖性,安全度量等多个因素去考虑问题,提出的解决方法则是逐步引入安全开发过程,提供相应的工具支撑,目标是最后让客户提升业务系统自身实质性安全问题。安全测试首先会对被测试系统做系统分析,分析其架构,软件体系以及程序部署等等,然后再对被测系统做系统安全分析,在这之后会对系统进行安全建模,明确本系统可能来自的各个潜在威胁,之后需要剖析系统,确认有哪些攻击界面,根据测试方案进行测试。

 

去期待陌生,去拥抱惊喜。