隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,服務(wù)安全性和數(shù)據(jù)安全性變的越來(lái)越重要,提供接口服務(wù)的系統(tǒng)往往會(huì)應(yīng)用各種加密技術(shù),保證接口的安全調(diào)用,如何應(yīng)用工具來(lái)實(shí)現(xiàn)加密接口測(cè)試成為一項(xiàng)必要技能。在講解如何用Jmeter實(shí)現(xiàn)接口安全性測(cè)試之前,先來(lái)了解一下常見(jiàn)的加密算法,測(cè)試同學(xué)可根據(jù)不同的加密算法類型和程序猿&程序猿溝通,獲取所需的信息,實(shí)現(xiàn)加密接口的處理。

摘要算法
對(duì)明文編碼生成信息摘要,以防止被篡改。比如MD5使用的是Hash算法,無(wú)論多長(zhǎng)的輸入,MD5都會(huì)輸出長(zhǎng)度為128bits的一個(gè)串。
摘要算法不要秘鑰,客戶端和服務(wù)端采用相同的摘要算法即可針對(duì)同一段明文獲取一致的密文
對(duì)稱加密
對(duì)稱加密算法是共享密鑰加密算法,在加密解密過(guò)程中,使用的密鑰只有一個(gè)。發(fā)送和接收雙方事先都知道加密的密鑰,均使用這個(gè)密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密。
數(shù)據(jù)加密:在對(duì)稱加密算法中,數(shù)據(jù)發(fā)送方將明文 (原始數(shù)據(jù)) 和 加密密鑰一起經(jīng)過(guò)加密處理,生成復(fù)雜的密文進(jìn)行發(fā)送。
數(shù)據(jù)解密:數(shù)據(jù)接收方收到密文后,使用加密的密鑰及相同算法的逆算法對(duì)加密的密文進(jìn)行解密,將使其恢復(fù)成可讀明文。
非對(duì)稱加密
非對(duì)稱加密算法,有兩個(gè)密鑰,一個(gè)稱為公開(kāi)密鑰 (publickey),另一個(gè)稱為 私有密鑰 (private key),加密和解密使用的是兩個(gè)不同的密鑰,所以這種算法稱為非對(duì)稱加密算法。
如果使用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私鑰才能進(jìn)行解密。
如果使用 私鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的公鑰才能進(jìn)行解密。
常見(jiàn)加密算法的處理方式
根據(jù)上述常見(jiàn)的加密算法,測(cè)試人員在測(cè)試不同的加密接口可采用下述的方法處理加密接口
摘要算法(MD5.SHA1 ):造接口數(shù)據(jù)前調(diào)用MD5,SHA1進(jìn)行編碼,服務(wù)端對(duì)比編碼后的字符串是否一致。
對(duì)稱加密算法(AES,DES ):造接口數(shù)據(jù)前從開(kāi)發(fā)獲取對(duì)稱公鑰,基于對(duì)稱公鑰可以加密請(qǐng)求數(shù)據(jù),解密響應(yīng)報(bào)文。
非對(duì)稱加密算法(RSA):造接口數(shù)據(jù)前從開(kāi)發(fā)獲取公鑰私鑰去加密解密接口數(shù)據(jù)
下面以Jmete為例介紹如何實(shí)現(xiàn)加密接口的處理,目前有一接口在服務(wù)器實(shí)現(xiàn)邏輯處理以前會(huì)對(duì)接口數(shù)據(jù)進(jìn)行SHA加密,服務(wù)器獲取到加密接口數(shù)據(jù)以后先解密和驗(yàn)證數(shù)據(jù)是否合法有效,再進(jìn)行邏輯處理。針對(duì)這種接口測(cè)試的時(shí)候,在發(fā)起請(qǐng)求以前,我們需要對(duì)接口進(jìn)入如下特殊處理:
和開(kāi)發(fā)溝通接口加密的算法以及需要的信息,如果是SHA加密,和開(kāi)發(fā)溝通獲取加密的秘鑰,以及加密和編碼的關(guān)鍵字符串
在發(fā)起接口請(qǐng)求以前,對(duì)接口明文數(shù)據(jù)進(jìn)行預(yù)處理,在Jmeter的接口實(shí)現(xiàn)中,可以通過(guò)添加Beanshell腳本,在Beanshell腳本中基于上一個(gè)步驟獲取到的信息,采用和服務(wù)端相同的加密方法和加密流程對(duì)接口明文進(jìn)行加密和編碼
基于加密后的密文發(fā)起加密請(qǐng)求

作 者:Testfan Kitty
出 處:微信公眾號(hào):自動(dòng)化軟件測(cè)試平臺(tái)