安全测试 | 漏洞千万条,安全第一条

        测试工程师多数注重功能测试,对于安全测试的关注度较低。但是,随着互联网的发展,网络环境越来越复杂,各类软件涉及的领域也越来越多,这时系统与软件的安全问题就愈加重要了。近年来,有多个知名网站频繁出现用户信息泄漏,造成重大的损失。因此,安全测试也日益为企业所重视

        一提起软件安全,大部分人首先想到的都是信息泄露,其实,除了信息泄露,在整个软件的生命周期中,都有可能存在安全隐患,例如黑客恶意攻击、数据库信息泄露、数据篡改等。那什么是安全测试?为什么进行安全测试?如何开展安全测试?接下来,跟大家分享一下~

一、什么是安全测试?

        安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,验证产品是否符合安全需求定义和产品质量标准的过程。安全测试是检查系统对非法侵入渗透的防范能力。

二、为什么开展安全测试?

1、查找软件自身程序设计中存在的安全隐患;

2、检查应用程序对非法侵入的防范能力,保护系统不受到非法的侵入;

3、证明软件的安全性,根据安全指标不同测试策略也不同。

三、什么是安全开发生命周期?

SDL( Security development lifecycle )即安全开发生命周期,是微软提出的从安全角度指导软件开发的过程。将安全的考虑集成在软件开发的每一个阶段,利用威胁模型改进安全流程。

一个完整的安全开发流程包含从需求阶段到运维阶段共5个阶段,每个阶段都有其相应的安全职责,安全测试贯穿于软件的整个生命周期。

1、【需求阶段】:产品需要通过需求调研对此次需求中涉及到的安全点进行评估,并将安全需求点落实到PRD中,并在需求评审时与项目成员同步到位,提高大家安全意识。

2、【开发阶段】:开发在设计过程中需要对PRD中的安全点进行考虑,包含对可能的攻击面的分析和安全API以及组件的开发等。

3、【测试阶段】:测试需要在提测前,提前对PRD进行分析,预测可能存在的安全问题,并设计相关测试用例,防止测试点遗漏,组织相关人员对此进行用例评审,执行完用例并输出对应的测试报告

4、【上线阶段】:研发、测试、产品同学需要关注上线后的安全问题,要进行安全漏洞的扫描与监控,保证上线过程中不会出现漏洞,同时,还需要编写一份应急方案,方便运维等人员的使用。

5、【运维阶段】:运维同学需要定时进行安全巡查,保证软件在使用过程中不会出现安全问题,一旦出现安全问题,则在执行应急方案的同时,需要对此情况进行上报,与研发一起解决这个安全问题。

四、安全测试与功能测试的区别?

    与功能测试相比,安全测试需要转换视角,改变测试中模拟的对象。下面从以下维度比较功能测试与安全测试的不同:

1、测试目标不同

功能测试以发现Bug为目标;

安全测试以发现安全隐患为目标。

2、假设条件不同

功能测试假设导致问题的数据是用户不小心造成的,接口一般只考虑用户界面;

安全测试假设导致问题的数据是攻击者处心积虑构造的,需要考虑所有可能的攻击途径。

3、思考域不同

功能测试以系统所具有的功能为思考域;

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

4、问题发现模式不同

功能测试以违反功能定义为判断依据;

安全测试以违反权限与能力的约束为判断依据。

五、常见安全测试的验证点?

1、SQL注入

    SQL注入是指将用户的输入信息在没有经过校验的情况下,拼接到业务SQL中去执行了,造成业务漏洞或对数据库造成攻击,主要是对【服务端】的攻击。

【案例】:

str SQL=“select*fromuserswhere(name=‘张三’;DROPTABLEusers;--)”str SQL=“select*fromuserswherename=‘张三’;DROPTABLEusers”strSQL=“select*fromuserswhere(name=‘“+username+”’)and(pw=‘“+password+”’); ”str SQL=“select*fromuserswhere(name=‘1’or‘1’=‘1’)and(pw=‘1’or‘1’=‘1’); ”

2、XSS攻击

   XSS(Cross Site Scripting)跨站脚本攻击,其缩写原本为 CSS ,但与HTML中的层叠样式表(Cascading Style Sheets)缩写重名了,为了区分就将跨站脚本改为了XSS。

    经常出现在富文本框,比如邮箱出现XSS攻击,那么可以通过发邮件给另外一个人,里面写带有攻击性的脚本之类的,对方收到后就会执行,比如脚本中写获取cookie之类的,则会被获取到,然后通过这个cookie就可以去登录对方的邮箱,主要是对【客户端】的攻击。

【XSS攻击过程】:

网络异常取消重新上传

XSS攻击有以下4个步骤:

步骤1:攻击者通过邮件或其他方式诱使用户点击包含恶意代码的链接,例如攻击者通过E-mail向用户发送一个包含恶意代码的网站test.com 。

步骤2:用户点击链接后,浏览器会在用户毫不知情的情况下执行链接中包含的恶意代码。

步骤3:将用户与test.com 交互的cookie和session等信息发送给攻击者。

步骤4:攻击者拿到这些数据之后,就会伪装成用户与真正的网站进行会话,从事非法活动。

3、CSRF攻击

CSRF(Cross-Site Request Forgery)跨站请求伪造,它是一种针对Web应用程序的攻击方式,攻击者利用CSRF漏洞伪装成受信任用户的请求,来访问受攻击的网站。主要是对【客户端】的攻击。

    比如打开了银行网站,此时就会产生session,那么此时如果打开一个含有隐藏的获取session并自动发送给银行的请求,则此时就会存在CSRF攻击。

网络异常取消重新上传

(1)【XSS攻击有以下3个步骤】:

    步骤1:用户访问一个信任网站时;

    步骤2:在没有退出会话的情况下,攻击者诱使用户点击恶意网站,恶意网站会返回攻击代码,同时要求访问信任网站;

    步骤3:这样用户就在不知情的情况下将恶意网站的代码发送到了信任网站。

(2)【CSRF和XSS的不同之处】:

    XSS是盗取用户信息伪装成用户执行恶意活动,而CSRF则是通过用户向网站发起攻击。

    如果将XSS攻击过程比喻为小偷偷取了用户的身份证去办理非法业务,则CSRF攻击则是骗子“劫持”了用户,让用户自己去办理非法业务,以达到自己的目的。

4、业务逻辑漏洞

    比如下单时篡改订单金额、商品数量,如果接口没有做校验,则会导致数据被篡改,0元可购买商品的情况。

5、越权测试

验证手动更改url的参数,访问无权访问的页面;

拿到更高权限人员的账号和密码,验证通过接口调用等方式进行操作;

验证人员权限和数据权限是否有进行控制。

6、登录与身份验证

用户名与密码不一致时需进行校验,无法登录;

验证码需限制一次性使用;

验证每天验证码获取限制次数,避免造成短信轰炸,造成短信费用的损失;

验证密码不能带有提示,如手机号后6位数;

修改密码时需校验原密码;

订单号、流水号不能有规律,否则他人可根据规律遍历获取数据;

账号密码需要有锁定机制,比如错误输入5次锁定账号;

密码强度:大小写、特殊字符、长度。

7、文件上传与下载

需要校验文件上传次数,避免恶意上传,使得资源池爆满;

需要限制文件的类型和大小,避免木马病毒等,应该过滤一些存在安全隐患的文件;

系统资源需要登录才可访问,避免不登录系统,直接输入url可直接下载资源的情况;

校验通过../../等方式跳转到其他目录获取相关重要文件。

8、敏感信息

数据库、日志、提示等不出现敏感信息,避免泄漏;

人员的邮箱电话等信息需要加密(如数据库加密,页面数据脱敏);

需要使用https密文传输,非http明文传输。

9、重要数据

重要文件需附加水印。

10、敏感词校验

对系统带输入框的进行敏感词输入、搜索。

验证是否对敏感词有拦截,如有拦截则正常,如不能拦截则存在安全问题。

六、最后总结

        对于测试工程师来说,除了黑盒测试、白盒测试、自动化测试、性能测试外,安全测试也较为重要。安全测试与功能测试一样,在软件测试过程中,是一个非常重要的测试环节,通过安全测试,可以在一定程度上提高系统的安全性,从而保障公司的利益。

        在测试过程中,要转换看问题的视角,要将自己定位为恶意破坏规则的用户,以破坏的视角看待问题。同时,在看待PRD中的功能点时,要多角度考虑问题,需要考虑到它是否存在安全隐患,从不同角度看待问题,会有不同的结果。

        安全测试固然重要,但是安全测试需要掌握的知识还有很多,需要很多专业的技术来支撑,否则很难做好,笔者也会在后面的文章与大家分享更多关于安全测试的内容,希望可以给你带来收获。大家可以结合我文章内容进行实战性应用,在实战过程中如有任何疑问,欢迎私信与我沟通!

------------------------------------------------------------------------------

【爱测试·爱分享】

更多内容可关注公众号:测试专享

专注于性能、自动化、接口测试、中间件等技术,与您分享测试技术点滴,内容涵盖:Jmeter、PTS、Python、Selenium、小程序自动化、Linux等热门测试技术,让您在实战中提升自我。在手机上阅读所有文章,随时随地都能学习。

--------------------------------------------------------------------------------

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值