WebApi接口访问频率控制的实现

关于限流的文章,博客园内还是有挺多的。本文做了一个基于Filter限流的例子,算是对WebApiThrottle使用的一个具体的实例。

实现方法:

1、使用Nuget,对WebAPI项目添加WebApiThrottle的引用

2、进行注册,一般是在WebApiConfig的Register方法里添加,代码如下:

 1         config.Filters.Add(new CustomThrottlingFilter()
 2             {
 3                 Policy = new ThrottlePolicy()
 4                 {
 5                     //ip配置区域
 6                     IpThrottling = true,
 7                     ClientThrottling = true,
 8 
 9                     //端点限制策略配置会从EnableThrottling特性中获取。
10                     EndpointThrottling = true
11                 }
12             });

其中CustomThrottlingFilter是自己重写的ThrottlingFilter,也可以直接用默认配置。我自定义的CustomThrottlingFilter如下:

 1     public class CustomThrottlingFilter: ThrottlingFilter
 2     {
 3         /// <summary>
 4         /// Sets the indentity.
 5         /// </summary>
 6         /// <param name="request">The request.</param>
 7         /// <returns>RequestIdentity.</returns>
 8         protected override RequestIdentity SetIndentity(HttpRequestMessage request)
 9         {
10             var sessionId = string.Empty;
11             try
12             {
13                 var requestCookie = request.Headers.GetCookies().FirstOrDefault();
14                 if (requestCookie != null)
15                 {
16                     foreach (var item in requestCookie.Cookies.Where(item => item.Name == "Session_Id"))
17                     {
18                         sessionId = item.Value;
19                         break;
20                     }
21                 }
22             }
23             catch (Exception)
24             {
25                 sessionId = string.Empty;
26             }
27             return new RequestIdentity()
28             {
29                 ClientKey = string.IsNullOrWhiteSpace(sessionId) ? sessionId : "anon",
30                 ClientIp = base.GetClientIp(request).ToString(),
31                 Endpoint = request.RequestUri.AbsolutePath.ToLowerInvariant()
32             };
33         }
34     }

3、对需要控制的接口或者控制器加上头标示 

  [EnableThrottling(PerMinute = 12)]//控制访问频率,每分钟最多12次

不需要控制访问频率的可以不加或者加上

 [DisableThrotting]

 

这样就实现了使用过滤器控制特定API的访问频率,更多的使用方法可以参考下面的地址。

 

 

参考资料:

WebApiThrottle限流框架使用手册  http://www.cnblogs.com/mushroom/p/4659200.html

控制ASP.NET Web API 调用频率与限流 http://www.cnblogs.com/Irving/p/4664786.html

控制ASP.NET Web API 调用频率 http://www.cnblogs.com/shanyou/p/3194802.html

转载于:https://www.cnblogs.com/SzeCheng/p/5407316.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于WebAPI接口文档,漏洞是指其中可能存在的安全问题或信息泄露的风险。常见的WebAPI接口文档漏洞包括但不限于以下几种: 1. 敏感信息泄露:接口文档中可能包含一些敏感信息,如数据库凭据、访问令牌、加密算法等。如果这些信息被未授权的人员获取,可能导致系统安全受到威胁。 2. 跨站脚本攻击(XSS):接口文档中可能存在未经过滤的用户输入,如果攻击者能够注入恶意脚本代码,就可以在用户浏览器上执行任意代码,导致信息泄露或页面篡改等问题。 3. 跨站请求伪造(CSRF):接口文档中可能存在未进行CSRF防护的接口,攻击者可以利用该漏洞发送伪造的请求,以受害用户的名义执行某些操作,如更改密码、删除账户等。 4. 接口授权与认证问题:接口文档可能未明确规定每个接口访问权限和认证方式,导致未经授权的用户可以访问敏感接口,或者绕过认证机制直接获取资源。 5. 预先定义的安全策略缺失:接口文档未明确规定API的安全策略,如HTTPS强制使用、请求频率限制、访问令牌有效期等,可能导致恶意用户滥用接口资源。 为了避免这些漏洞,开发者在编写接口文档时应该遵循以下安全原则: 1. 敏感信息保护:避免在接口文档中明文泄露敏感信息,如数据库凭据、密钥等,可以使用占位符或模拟数据代替。 2. 输入验证与过滤:对于用户输入的数据,要进行合法性验证和安全过滤,防止XSS攻击和其他注入漏洞。 3. CSRF防护:对于需要保护的接口,要使用CSRF令牌或其他防护机制,确保请求的合法性。 4. 接口权限与认证:明确规定每个接口访问权限和认证方式,确保只有经过授权的用户才能访问敏感接口。 5. 安全策略设置:在接口文档中明确规定API的安全策略,如使用HTTPS、请求频率限制、访问令牌有效期等。 通过遵循这些安全原则,可以有效减少WebAPI接口文档的漏洞风险,提升系统的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值