WebApi 接口惡意請求限制


為了防止爬蟲以及惡意請求,我們適當的為API增加一個請求限制   WebApiThrottle限流框架   

WebApiThrottle支持自定義配置各種限流策略。可以根據不同場景配置多個不同的限制,比如授權某個IP每秒、每分鍾、每小時、每天、每周的最大調用次數。 這些限制策略可以配置在所有請求上,也可以單獨給每個API接口去配置。  

                                                                                                        --十色鹿

本文不再過多講解理論,你們可以看看這兩位大佬文章,都解釋很詳細了(鏈接在底部)

API 還是使用上次的  如果沒新建,請看 ->  https://www.cnblogs.com/whatarey/p/11438243.html

 第一步  NuGet WebApiThrottle

 

第二步 WebApiConfig.cs  配置

 1        #region web api 接口請求限制~~1
 2             ///// web api 接口請求限制~~
 3             //config.Filters.Add(new ThrottlingHandler()
 4             //{
 5             //    Policy = new ThrottlePolicy()
 6             //    {
 7 
 8             //        //ip配置區域
 9             //        IpThrottling = true,
10             //        ClientThrottling = true,
11 
12             //        //端點限制策略配置會從EnableThrottling特性中獲取。
13             //        EndpointThrottling = true
14 
15             //    }
16             //});
17             #endregion
18 
19             #region Web Api 接口請求限制 2
20 
21             //WebApiConfig 增加
22             config.MessageHandlers.Add(new ThrottlingHandler()
23             {
24                 Policy = new ThrottlePolicy(
25                       perSecond: 5            //可選參數 每秒限制次數
26                     , perMinute: 20         //可選參數 每分鍾限制次數
27                     , perHour: 200          //可選參數 每小時限制次數
28                     , perDay: 1500          //可選參數 每天限制次數
29                     , perWeek: 3000         //可選參數 每周限制次數
30                     )
31                 {
32                     IpThrottling = true,   //該值指示是否啟用IP限制
33                     ClientThrottling = true //該值指示是否啟用客戶端限制
34                 },
35                 Repository = new CacheRepository(), //獲取或設置限制度量存儲。
36                 //QuotaExceededMessage = JsonConvert.SerializeObject(json.msg),
37                 QuotaExceededContent = (l, obj) =>  //違反限流事件
38                 {  //API calls quota exceeded! maximum      admitted {0} per {1} 
39                     
40                     var json = new {message = $"系統檢測您當前操作非人類,{l}/{obj}" }; 
41                     return (json);
42                 }
43             });
44             #endregion
View Code

 第三步:測試

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

https://www.cnblogs.com/fger/p/11119566.html  --有關WebApiThrottle  可查看此篇文章

https://www.cnblogs.com/SzeCheng/p/5407316.html  --有關WebApiThrottle  可查看此篇文章

 

 

End


免責聲明!

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



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