WebApi
的小白想要了解一些關於WebApi
安全性相關的問題,本篇文章是整理一些關於WebApi
安全、權限認證的文章。html
客戶端調用:http://api.xxx.com/getInfo?Id=value
如上,這種方式簡單粗暴,在瀏覽器直接輸入"http://api.xxx.com/getInfo?Id=value",便可獲取到相關的信息了,可是這樣的方式會存在很嚴重的安全性問題,沒有進行任何的驗證,你們均可以經過這個方法獲取到產品列表,致使信息泄露。
那麼咱們就會有下面的疑問了:web
TOKEN+簽名認證
原理以下:算法
1.作一個認證服務,提供一個認證的WebApi
,用戶先訪問它獲取對應的Token
api
2.用戶拿着相應的Token
以及請求的參數和服務器端提供的簽名算法計算出簽名後再去訪問指定的Api跨域
3.服務器端每次接收到請求就獲取對應用戶的Token
和請求參數,服務器端再次計算簽名和客戶端簽名作對比,若是驗證經過則正常訪問相應的Api,驗證失敗則返回具體的失敗信息。瀏覽器
參考連接:安全
使用OAuth
的Client Credential Grant
受權方式,在服務端經過Authorization Server
的一個實現成功發放了Access Token
,並在客戶端成功拿到了Access Token
。在ASP.NET WebApi
中啓用OAuth的
Access Token驗證很是簡單,只需在相應的Controller或Action加上
[Authorize]標記。在ASP.NET中基於
Owin OAuth`
參考文章:服務器
ASP.NET MVC 和 WebApi
的接口安全 給每一個http請求添加一個簽名,服務端來驗證簽名的合法性,若是簽名合法則執行響應的操做,若是簽名非法則直接拒絕請求。
簽名算法架構
簽名算法通常都使用Hash散列算法,經常使用的有MD5,SHA系列算法。這些算法能夠根據不一樣的輸入,計算出不一樣的結果,並且碰撞的機率很低。
簽名算法跟加密算法不是一回事。HMAC SHA做爲一種更加安全的簽名算法,使用一個Key來影響簽名的結果。這樣一樣的輸入配合不一樣的Key能夠得出不一樣的簽名,更加安全。mvc
簽名參數
能夠用Http請求的
queryString
而後加上時間戳
還有隨機數
來做爲簽名的參數。
參考連接:
出於安全考慮,瀏覽器會限制腳本中發起的跨站請求,瀏覽器要求JavaScript或Cookie只能訪問同域下的內容。
參考連接: