2.接口參數使用簽名(非對稱加密算法);
3.接口參數需要校驗;
4.每次請求需要用戶命令;
5.多次失敗后需要有鎖定機制;
6.接口對應用戶權限,用戶只能調用有權限的接口;
7.系統接口做過負荷機制用來保護系統安全;
2、接口安全性用例設計
(1) 輸入驗證
客戶端驗證服務器端驗證(禁用腳本調試,禁用Cookies)
1.輸入很大的數(如),輸入很小的數(負數);
2.輸入超長字符,如對輸入文字長度有限制,則嘗試超過限制,剛好到達限制字數時有何反應;
3.輸入特殊字符,如:~!@#$%^&*()_+:”{}|;
4.輸入中英文空格,輸入字符串中間含空格,輸入首尾空格;
5.輸入特殊字符串NULL,null,0x0d 0x0a;
6.輸入正常字符串;
7.輸入與要求不同類型的字符,如: 要求輸入數字則檢查正值,負值,零值(正零,負零),小數,字母,空值; 要求輸入字母則檢查輸入數字;
8.輸入html和代碼;
9.對于像回答數這樣需檢驗數字正確性的測試點,不僅對比其與問題最終頁的回答數,還要對回答進行添加刪除等操作后查看變化,例如:
①輸入”hello,是否出錯;
②輸入,是否出現文本框;
③輸入,是否出現提示。
(2)用戶名和密碼
1.輸入密碼是否直接顯示在輸入欄;
2.是否有密碼最小長度限制(密碼強度);
3.用戶名和密碼中是否支持輸入空格或回車;
4.是否允許密碼和用戶名一致;
5.防惡意注冊:可否用自動填表工具自動注冊用戶;
6.有無缺省的超級用戶(admin等,關鍵字需屏蔽);
7.有無超級密碼;
8.是否有校驗碼;
9.密碼錯誤次數有無限制;
10.是否大小寫敏感;
11.密碼是否以明碼顯示在輸出設備上;
12.強制修改的時間間隔限制(初始默認密碼);
13.token的唯一性限制(需求是否需要);
14.token過期失效后,是否可以不登錄而直接瀏覽某個頁面;
15.哪些頁面或者文件需要登錄后才能訪問/下載;
16.cookie中或隱藏變量中是否含有用戶名、密碼、userid等關鍵信息;
(3)文件上傳下載
1.上傳文件是否有格式限制,是否可以上傳exe文件;
2.上傳文件是否有大小限制,上傳太大的文件是否導致異常錯誤;
3.通過修改擴展名的方式是否可以繞過格式限制,是否可以通過壓包方式繞過格式限制;
4.是否有上傳空間的限制,是否可以超過空間所限制的大小;
5.上傳0K的文件是否會導致異常錯誤;
6.上傳是否有成功的判斷,上傳過程中中斷,程序是否判斷上傳是否成功;
7.對于文件名中帶有中文字符,特殊字符等的文件上傳;
8.上傳并不存在的文件是否會導致異常錯誤;
(4)URL校驗
1.某些需登錄后或特殊用戶才能進入的頁面,是否可以通過直接輸入URL的方式進入;
2.對于帶參數的網址,惡意修改其參數(若為數字,則輸入字母,或很大的數字,或輸入特殊字符等),打開網址是否出錯,是否可以非法進入某些頁面;
3.搜索頁面URL中含有關鍵字,輸入html代碼或看是否在頁面中顯示或執行;
(5)越權訪問
在一個產品中,用戶A通常只能夠編輯自己的信息,他人的信息無法查看或者只能查看已有權限的部分,但是由于程序不校驗用戶的身份,A用戶更改自己的id值就進入了B用戶的主頁,可以查看、修改B用戶的信息,這種漏洞稱之為越權漏洞。
舉例:用戶登錄app成功,系統記錄用戶id,例如userid為1。
安全風險:此時用戶通過工具校驗發送消息將userid設置為2后是否登錄成功,及用戶是否可以通過修改userid來訪問其它用戶資源,引發嚴重問題。
(5) 防止SQL注入
①sql拼接:jdbc/obdc連接鏈接數據庫
select * from where userId=1
sql = sql +
②三方組件,比如java里面的,ibatis,jpa通過各種sql查詢業務信息,甚至破壞系統表;
示例:在文件框中輸入,在參數值中輸入如下。
(6) 跨站腳本攻擊(XSS)
原理:利用XSS的攻擊者進行攻擊時會向頁面插入惡意Script代碼,當用戶瀏覽該頁面時,嵌入在頁面里的Script代碼會被執行,從而達到攻擊用戶的目的。同樣會造成用戶的認證信息被獲取,仿冒用戶登錄,造成用戶信息泄露等危害。
安全風險:文字中可以輸入js腳本,例如這種有安全性的腳本,其它用戶進入后可以獲取該用戶的cookie信息,即可以對該用戶資源進行操作。
示例:在輸入框中輸入,這些腳本如果有對應的反饋就是有問題。
(7) 跨站請求偽造(CSRF)
CSRF是一種對網站的惡意利用,過偽裝來自受信任用戶的請求來利用受信任的網站。
舉例:在APP上打開某個網站時,突然彈出您已經中獎的提示和鏈接。
安全風險:點開鏈接后會跳轉到對應異常界面,并且用戶本地信息可能已經被獲取,如果在跳出界面進行相關操作,比如銀行相關操作會引起更大的安全問題和嚴重損失。
安全防護:使用post,不使用get修改信息;驗證碼,所有表單的提交建議需要驗證碼;在表單中預先植入一些加密信息,驗證請求是此表單發送。
3、總結
接口安全性測試用例與一般測試用例的區別如下。
相同點:基本的用例設計方法,參照相同的需求和業務;
不同點:不受界面限制,邏輯性更重,存在隱藏內容,特殊值更多,傳輸格式種類繁多。