不得不说,时下互联网大风盛行,一些产品没有做好安全测试,在被投入市场使用后,都暴露出了自身的安全漏洞问题。这些问题中,有些是涉及普通人的个人隐私的;有些涉及到了企业的业务数据;有的甚至甚至会泄露企业的立身根本,让人不寒而栗。
而这些问题的产生,一方面报了了我们的一些技术产品缺乏安全意识,另一方面,也暴露出我国安全测试人员的匮乏问题。换句话说,若有大量的测试新人愿意尝试学习安全测试,未来,他将有极大可能告别“中年危机”,甚至,在35岁时,走向了人生的巅峰。
由此,今天,我们就一起来聊聊安全测试行业,和我对这个行业的一些浅见。
01、安全测试并不遥远
对于很多新手而言,他们在入行初期,可能主要从事的是功能测试,所以有些人会觉得安全测试非常遥远。但其实,安全测试还真没有你想的那么遥远。
譬如:我们需要修改url 的参数,他们也同样需要;我们测过用户会话是否如期 timeout,他们也一样。他们也需要做测试计划、需要设计测试用例、需要做bug分析与管理等等。
当然,安全测试确实比一般的测试要复杂一些。一个专业的安全测试专家,在某种程度上来说,也可以算是一个全栈工程师。但作为测试人,我们更具有先天优势,学起来也会更容易,而且代码运用也没有全栈工程师那么多,所以,感兴趣的同仁,千万不要被安全测试的“外貌”吓到。
02、安全测试和普通测试的相似性
简单来说,安全测试其实和普通测试有很多相似之处,独特点就在于它是为了保护软件系统的数据与功能的不受侵害。所以,在很大程度上,它与常规测试有这么些相似之处:
1)目标类似:预防、检测系统的缺陷;
2)在软件生命周期中的工作过程类似:需要了解业务需求;
例如:在敏捷开发团队里,常规测试人员日常处理的事务,安全测试人员同样要做。包括,了解业务的需求;针对业务与系统功能设计用例;沟通测试用例;在测试环境进行全面测试;分析测试结果并做总结,等等。
3)测试用例相似:面向用户的测试场景非常类似;
比如:在面向终端用户的测试场景上,常规测试用例与安全测试用例可以说是大同小异的。包括登录系统功能,密码,用户名,输入错误次数达到多少次,系统会做出怎样的提示等等。
4)都需要探索过程:对会对不同的业务场景有目的的进行探索;
事实上,无论什么测试,都是为了了解软件系统是否能按照我们的预期完成运转的过程。只不过安全测试人员,主要的关注点是安全漏洞。所以,无论是什么测试,我们都会得到很多探索的乐趣。
5)测试人员的警觉性:测试人员都需要对开发人员的代码保持友好的“怀疑态度”等等。
尤其是当开发人员以“我只做了一个很小的代码改动”为由,导致系统生态被破坏的问题。记住,无论是多小的改变,我们都应该时刻警惕。安全测试人员在这类问题上,需要花更多的心思。
03、安全测试的特殊性
如果听完我前面描述的内容,你对安全测试有了兴趣,那么,接下来我们就要说说安全测试的独特之处了。对此,我认为主要有3个点,你需要特别关注。
1)懂得随时转换视角
在我看来,不管你是测试老司机,还是全栈开发人员,想做安全测试,你都需要具备快速转换视角的意识。举个栗子:在这幅画里,你能看到几个人?
显而易见,每个人看到的数量是不同的。这就意味着,我们能发现的问题数量是不同的。对于安全测试人员来说,我们必须努力争做找出bug最多的人。
记得我最初还不是安全测试人员时,曾发生过这么一幕。在测试一个web页面登录时:
当我输入“错误用户名+正确密码”时,页面显示“该用户名不存在”;
当我输入“正确用户名+错误密码”时,页面显示“密码错误”。
对于这样的结论,按照普通测试人员的标准,就可以直接跳过了。但当时,我身边的安全测试人员,却立马发现了问题:“这个提示暴露了敏感信息!”
我当时非常茫然,对方便分析给我听:恶意使用者可以通过提示信息,推测出哪些用户名已经存在于系统中。然后,利用这些已知用户名,再进行密码暴力破解,缩小破解的范围,从而破解用户信息。
所以,这个信息虽然为合法用户提供了便利,但也存在风险,为恶意用户提供了便利。由此,我也理解了安全测试的重要性。
2)懂得转换身份
这里,我主要说的是普通用户和恶意用户身份的转变。对于安全测试人员来说,我们必须模拟恶意用户,来攻击现有系统的安全。因为,对于恶意用户来说,他们很多时候就是为了找系统漏洞,从而实现不劳而获。
想必“京东白条”事件大家都听说过吧。几个大学生能通过恶意使用他人的身份信息,找到系统漏洞,盗取巨额资金,想想就令人后怕。所以,安全测试人员一定要懂得转换身份。
3)会使用专用的测试工具
有了思维的转换后,我们就可以加入新的想法,进行测试了。但在做项目时,我们会发现并不是那么容易,就能模拟出恶意用户的行为。这时候,使用工具就变得非常有必要了。
比如,OWASP Zap、Burp等,大家都可以了解一下。这些比较实用,又比较容易上手,还可以执行很多恶意的操作场景。所以,,推荐新手们了解起来。
04、学习做安全测试
最后,就是我们学习做安全测试了。以我们是网上商城的买家,我们要在商品评价中上传图片这个功能为例,我们来说说主要需要做什么。
笔者以为,做相应的安全测试,主要需要做以下7件事:
识别系统中有价值的数据;
在需求分析阶段加入恶意用户需求;
针对恶意用户需求设计测试用例;
参与启动恶意需求的开发;
在开发环境验收恶意需求的实现;
在测试环境中进行安全测试;
向团队反馈所发现的安全漏洞。
而对于这7件事情来说,它其实并不是需要我们做7件全新的事情,而是在每个测试环节,增加一些安全测试的内容而已。所以,大家可以放轻松啦。
05、写在最后
好啦,说了这么多,大家如果开始对安全测试感兴趣,或者想学习具体内容的话,可以在留言区告诉我,笔者可以私信一些具体的操作细节、心得体会给大家。欢迎大家留言交流~
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你
关注我的微信公众号【伤心的辣条】免费获取~
送上一句话:
世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。
我的学习交流群:902061117 群里有技术大牛一起交流分享~
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!