天天看點

業務安全之接口調用安全

       關于接口設計安全,主要需要考慮兩個方面的安全問題,一是接口通路驗證及權限問題,主要解決接口通路的合法性(使用者登入驗證、來源驗證、頻率控制等);另外是資料傳輸安全,主要解決接口資料被監聽篡改和接口錯誤處理(HTTPS安全傳輸、敏感内容加密、數字簽名等)。

一.接口調用重播攻擊

     常見于短信/郵件&驗證碼接口、訂單生成、評論送出等,需要對請求合法性校驗,請求合法性校驗主要就是指如何避免API被非法的調用。

     修複建議:

      1.對評論送出等操作采用驗證碼機制,防止生成資料業務被惡意調用;

      2.短信/郵件接口,需要對接調用頻率進行控制或者上限限制;

      3.每一個訂單(接口通路)使用唯一的token,送出一次後,token失效。

二.接口調用周遊漏洞

      Web接口一般将常見的一些功能需求進行封裝,通過傳入不同的參數來擷取對應的資料或者執行相應的功能,其中最常見的場景就是通過接口傳入id參數,傳回對應id的資訊。此類接口如請求合法性校驗不嚴,很容易出現非授權通路或者越權通路的問題。

修複建議:

      1.在session中存儲目前使用者的憑證或者id,隻有傳入憑證或者id參數值與session中的一緻才傳回結果。

       一般涉及身份校驗的接口,不要直接将敏感資訊的明文資訊在用戶端與服務端之間傳遞,可以将敏感資訊在服務端關聯到使用者辨別 ID,在用戶端儲存使用者辨別 ID 并送出到服務端,服務端根據 ID 取出對應資訊後進行校驗;

三.接口調用參數篡改漏洞

       在短信、郵件調用業務環節中,例如短信驗證碼、郵件驗證碼。修改對應請求中手機号或郵箱位址參數送出後,如果修改後的手機号或郵箱收到系統發送的資訊,則表示接口參數可被篡改。

修複建議:

      1.會話Session中存儲重要的憑證,在忘記密碼、重新發送驗證碼等業務中,從Session擷取使用者憑證而不是從客戶請求的參數中擷取;

      2.從用戶端處擷取手機号、郵箱等賬号資訊,要與Session中的憑證進行核驗,驗證通過後才允許進行業務操作。

四.接口未授權通路/調用漏洞

      在正常的業務中,敏感功能的接口需要對通路者的身份進行驗證,驗證通過後才允許調用接口進行操作。接口未做身份驗證或身份校驗不嚴,可能導緻非授權通路或越權調用,越權又分為垂直越權和水準越權。

修複建議:

      1.采用Token校驗的方式,在url中添加一個Token參數,隻有Token驗證通過才傳回接口資料且Token使用一次後失效;

      2.在接口被調用時,伺服器端對會話狀态進行驗證,如果已經登入,便傳回接口資料;如未登入,則傳回自定義的錯誤資訊;

      3.未授權通路接口做Session認證,并對使用者通路的每一個URL做身份鑒别,正确的校驗使用者id及token等;

      3.伺服器端需校驗身份唯一性,通路接口來源驗證,不同身份隻能檢視修改删除添加自己的資訊。

繼續閱讀