當前位置:
首頁 > 最新 > 基於SpringBoot的WEB API項目的安全設計

基於SpringBoot的WEB API項目的安全設計

SpringBoot的開箱即用功能,大大降低了上手一個WEB應用的門檻,友好的REST介面支持,在SpringCloud微服務體系中可編程性大大提高,本篇基於一個面向企業調用方用戶的WEB API項目,基於SpringBoot來構建,簡單看下介面的安全性模塊設計。

主要藉助於基於AOP技術來進行介面的安全防護,在SpringBoot下直接引入spring-boot-starter-aop即可使用。

1、在Pom中引入AOP配置

2、編寫對應處理類即可,通過@Order(n)設置合法的校驗順序。如LogAspect

下面進入此系統關鍵的安全設計模塊,由於是面向企業級介面調用用戶,與面向大眾的介面稍微有些不同,分為以下幾個方面。

1、詳細日誌記錄,凡請求過來均進行記錄,便於後期識別非法請求的防範依據

參考上文中實現方式,可以再細化。進行日誌的收集分析,後期分析介面的調用頻率等進一步需求。

2、白名單限制,僅接受特定系統的請求響應,調用方的IP地址需要在本系統中報備,否則無法調用。

不採用黑名單機制,主要原因在於未知的IP量太大,只能採用允可的方式,成本最小,效果也最好。

3、調用法身份合法性驗證,即便是白名單用戶,也需要進行驗證,確保用戶真正合法。主要驗證此請求是否確實來自於某一調用法,而非偽造的用戶請求。

常見做法:為調用方設置一個唯一標識和一個密鑰,介面到請求時校驗這兩者的合法性。

4、基於HmacSHA1演算法進行請求參數完整性驗證,主要用於檢測傳輸過程中參數是否被篡改。

也可以採用的簡單的MD5驗簽,效率更高。

5、防重放攻擊,即可通過了前4個步驟,不排除利用合法請求,暴力調用的情況。在驗證過程中增加時間戳項目,校驗調用時間是否在允許範圍內,比如1分鐘之內。(案例:QQ第三方登陸在校驗調用時間與服務時間時,時間差合理範圍內,即便不一致,也可以使用)

CSRF的問題必須要重視,可以進行很強大的重放攻擊。當然還有其它的如DOS攻擊等。

6、流量控制。比較熟知的例子就是微信開放平台暴露的介面,DOC中明顯指出某一介面一天內允許調用的次數,超過限制將無法響應。考慮到實際企業調用的情況,我們同樣可以針對某一調用方某一請求進行限制

可藉助Guava中對應RateLimiter模塊功能,也可藉助Redis高效響應機制自己設計,以調用方id+介面名稱為KEY,設置介面調用上限即可,按天實時更新數據增量。

以上基本上可以算是個完整的安全防範過程,當然還是需要藉助運維手段,在外層進行安全防範,比如WAF等,也可以在更高級處進行防範,比如網關接入層。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 歪脖貳點零 的精彩文章:

對稱加密演算法與非對稱加密演算法的優缺點

TAG:歪脖貳點零 |