天天看點

「測試」我建立安全測試流程的經驗分享

作者:架構思考

一、 安全測試的意義

安全問題,沒發生的時候我們可以僥幸,一旦發生生産安全問題,對很多公司來說可能就是黑天鵝事件了。平台的安全,是我們測試中不可舍棄的一環,而且需要長期持續的關注。

二、 從哪裡入手

很多公司沒有專職的安全測試人員,一個是安全涉及的技術棧比較廣,要做好還需要對每一個技術棧有深入的研究,市面上的安全人才是很稀缺的;另外一般小公司去養一個專職的安全人員,往往會去對比第三方安全外包平台,發現送出外包平台會更劃算。

團隊中沒有安全人員,特别是在靈活的當下,也不可能每一次疊代都送出第三方外包,那作為測試人員,我們就需要去思考,如何在測試流程中插入安全測試這一環,畢竟生産出損,你是無法置身事外的,引入安全測試也能為公司帶來價值

那麼我們該如何開展安全測試呢,很多同學目前可能直接用APPscan或zap進行掃描,這也是一個方式,但有些業務相關的安全問題這種工具是無法識别到的,有些還是需要手工環節的接入,安全測試也是測試的一種類型,在整個軟體研發的生命周期中,我們是如何去保障産品品質的?同樣,我們也按照這個思路,去建設我們的安全測試執行路徑

「測試」我建立安全測試流程的經驗分享

三、 萬丈高樓從地起,打造我們的安全測試流程

3.1 需求階段

在需求評審階段,我們除了關注需求的合理性和價值,還要加入破壞者思維去審視這個需求–這個需求哪裡有漏洞,可以讓我去破壞他的規則。

比如商家做活動,評論下點贊越多的發送禮品,那麼我是不是可以通過接口去不斷的刷點贊,讓你接口tps過載,導緻别人無法點贊,這樣我就有更大的機會拿取禮品。是以這樣就引申出來一個安全性需求–我們需要對活動的點贊和評論做限流處理。

3.2 代碼層面

  • 靜态代碼掃描

我們可以引入靜态代碼掃描工具,比如靜态代碼掃描,目前也有很多開源的靜态代碼掃描工具,比如大家常用的sonar

  • 三方元件的掃描

除了靜态代碼的掃描,開發人員在引用第三方依賴包的時候,擷取來源比較随意,很可能下載下傳的這個依賴包就包含病毒,程式中內建的第三方的元件也是需要做安全掃描的,比如node的依賴包安全掃描就可以選擇nsp這個開源軟體

3.3 資料脫敏

關于資料脫敏我們主要關注兩部分,一個是敏感資料的存儲是否做了加密處理,比如使用者的賬戶密碼、商家的卡密,這些都需要在資料落地的地方做加密存儲。我們需要通過查詢資料庫或者檔案,确認資料是否做了加密存儲

另外一塊就是在傳輸的過程中,敏感資料是否做了加密處理,比如我們的登入注冊功能,在前後端接口互動過程中,密碼是否做了加密處理;擷取短信相關的業務,接口是否直接将短信做了傳回等。我們可以通過浏覽器自帶的開發者工具F12或者第三方工具fiddler、Charles抓包測試。

「測試」我建立安全測試流程的經驗分享

3.4 跨目錄權限

在商戶管理側,涉及到了商戶和子賬号的業務需求,子賬戶是可以定義通路哪些頁面的角色。當我們沒有給子賬戶賦權的頁面,他是否可以直接通過浏覽器中輸入url進行通路,這個我們是需要進行測試的。

「測試」我建立安全測試流程的經驗分享

3.5 跨站腳本

跨站腳本,大家比較熟知的有xss,跨站腳本會導緻會話被劫持、敏感資訊洩露甚至賬戶被盜的風險,最簡單的方式是在有文本框的地方通過構造js或者html儲存,看是否做了轉義處理;另外也可以通過帶參數的url後面進行js傳值進行請求,檢視是否執行了js

「測試」我建立安全測試流程的經驗分享

3.6 SQL注入

sql注入大家都比較熟悉,在界面上做資料庫相關的操作,我們可以構造一些傳入參數去改變sql的最終執行邏輯,比如針對查詢類的,http://xxx.com/salay/userid=9898,我們可以再後面修改9898為9898 “or 1=1“,這樣在最終sql查詢中就變成一個始終為真的資料,如果存在注入問題會将所有人的薪資資料暴露出來。sql注入相關的測試我們可以借用sqlmap這個工具

「測試」我建立安全測試流程的經驗分享

3.7 越權

越權,簡單的了解就是A使用者操作了B使用者的資料,比如我們在下單過程中,商品A是給會員的購買的,非會員在擷取商品ID後,通過下單結構模拟下單商品A,如果能夠成功,就證明存在越權的問題,我們可以通過fiddler進行請求截取,然後修改傳參進行測試

「測試」我建立安全測試流程的經驗分享

3.8 上傳下載下傳

檔案的上傳下載下傳主要有三點

一個是對使用者磁盤空間的大小限制,比如提供了一個上傳功能,使用者無限制的上傳大容量檔案,導緻磁盤成本巨大。

檔案類型校驗

比如要上傳excel的,使用者上傳了html檔案,這個是存在一定的風險的,特别是上傳後可以直接通路資源檔案,這樣使用者可以通過上傳的html做一些xss的攻擊

資源下載下傳的安全控制,比如使用者下載下傳自己的工資條,是這樣一個連結,http://xxx.con/8888.xls,這樣就可以聯想修改8888這個值為其他值,檢視他人的敏感資料

3.9 伺服器端口

伺服器端口的測試,對有些自建機房,直接通過實體機進行部署的會很有用處,比如有些不需要使用的端口對外開放了,惡意使用者可能利用該端口從事一些非法操作,我們可以通過nmap進行伺服器的端口掃描,非必須的端口要關閉

3.10 業務需求次元

上面的測試項是通用性的規則,結合具體的業務需求,我們也可以産出一些安全測試點,比如針對登入注冊的需求,我們從密碼強度、驗證碼可以産出安全測試用例

「測試」我建立安全測試流程的經驗分享

針對有些使用者類的API接口,我們可以做限流的政策,比如擷取短信驗證碼,我們就要做一些風控政策,否則遇到惡意使用者,會造成公司短信成本損失

四、 結束語

安全是品質保障不可或缺的一環,作為測試人員,我們可以從最基礎開始去打造我們的安全測試流程,與其他測試類型一樣将安全的思想貫穿在整個軟體研發生命周期,做好安全品質内建。也希望大家一起交流你們是如何做安全測試的

文章來源:http://www.taodudu.cc/news/show-910703.html

繼續閱讀