WebApi的安全性及其解決方案


一、前言

  WebApi的小白想要了解一些關於WebApi安全性相關的問題,本篇文章是整理一些關於WebApi安全、權限認證的文章。

二、內容正文

 2.1 不進行驗證

 客戶端調用:http://api.xxx.com/getInfo?Id=value
如上,這種方式簡單粗暴,在瀏覽器直接輸入"http://api.xxx.com/getInfo?Id=value",即可獲取到相關的信息了,但是這樣的方式會存在很嚴重的安全性問題,沒有進行任何的驗證,大家都可以通過這個方法獲取到產品列表,導致信息泄露。
那么我們就會有下面的疑問了:

  1. 如何驗證調用者身份呢?
  2. 如何防止參數被篡改呢?
  3. 如何保證請求的唯一性?
  4. 如何保證請求的唯一性,防止請求被惡意攻擊呢?

 2.2 使用TOKEN+簽名認證

  原理如下:

  • 1.做一個認證服務,提供一個認證的WebApi,用戶先訪問它獲取對應的Token

  • 2.用戶拿着相應的Token以及請求的參數和服務器端提供的簽名算法計算出簽名后再去訪問指定的Api

  • 3.服務器端每次接收到請求就獲取對應用戶的Token和請求參數,服務器端再次計算簽名和客戶端簽名做對比,如果驗證通過則正常訪問相應的Api,驗證失敗則返回具體的失敗信息。

參考鏈接:

 2.3 基於Owin OAuth

 使用OAuthClient Credential Grant授權方式,在服務端通過Authorization Server的一個實現成功發放了Access Token,並在客戶端成功拿到了Access Token。在ASP.NET WebApi中啟用OAuth的Access Token驗證非常簡單,只需在相應的Controller或Action加上[Authorize]標記。在ASP.NET中基於Owin OAuth`
參考文章:

  2.4 使用簽名來保證ASP.NET MVC 和 WebApi的接口安全

 給每個http請求添加一個簽名,服務端來驗證簽名的合法性,如果簽名合法則執行響應的操作,如果簽名非法則直接拒絕請求。
簽名算法

簽名算法一般都使用Hash散列算法,常用的有MD5,SHA系列算法。這些算法可以根據不同的輸入,計算出不同的結果,而且碰撞的概率很低。
簽名算法跟加密算法不是一回事。HMAC SHA作為一種更加安全的簽名算法,使用一個Key來影響簽名的結果。這樣同樣的輸入配合不同的Key可以得出不同的簽名,更加安全。

簽名參數

可以用Http請求的queryString然后加上時間戳還有隨機數來作為簽名的參數。

參考鏈接:

  2.5 WebApi 跨域問題解決方案:CORS

 出於安全考慮,瀏覽器會限制腳本中發起的跨站請求,瀏覽器要求JavaScript或Cookie只能訪問同域下的內容。
參考鏈接:

三、文章推薦


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM