WebApi的安全性及其解決方案

1、前言

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

2、內容正文

 2.1 不進行驗證

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

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

 2.2 使用TOKEN+簽名認證

  原理以下:算法

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

  • 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能夠得出不一樣的簽名,更加安全。mvc

簽名參數

能夠用Http請求的queryString而後加上時間戳還有隨機數來做爲簽名的參數。

參考連接:

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

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

3、文章推薦

相關文章
相關標籤/搜索