WebApi接口安全机制:API接口限流防止恶意访问 ThrottlingHandler消息处理机制
WebApi接口安全机制:API接口限流防止恶意访问 ThrottlingHandler消息处理机制
文章介绍
为了防止网站意外暴增的流量比如活动、秒杀、攻击等,导致整个系统瘫痪,在前后端接口服务处进行流量限制是非常有必要的。本篇主要介绍下Net限流框架WebApiThrottle的使用。
WebApiThrottle是一个专门为webApi限制请求频率而设计的,支持寄宿OWIN上的中间件的限制过滤。服务端接口可以基于客户端请求IP地址、客户端请求key、及请求路由去限制webapi接口的访问频率。
首先在VS内使用nuget搜索安装WebApiThrottle。
Nuget地址:
WebApiThrottle支持自定义配置各种限流策略。可以根据不同场景配置多个不同的限制,比如授权某个IP每秒、每分钟、每小时、每天、每周的最大调用次数。 这些限制策略可以配置在所有请求上,也可以单独给每个API接口去配置。
限制流量消息处理机制:
C# Code:
/// <summary>
/// 添加接口访问限制流量消息处理机制
/// </summary>
/// <param name="config"></param>
public static void Set(HttpConfiguration config)
{
//ThrottlingHandler完整使用手册: http://www.cnblogs.com/mushroom/p/4659200.html
ThrottlingHandler throttling = new ThrottlingHandler()
{
Policy = new ThrottlePolicy(perSecond: 2, perMinute: 60, perHour: 600, perDay: 1500)
{
//限制来自同IP请求的最大次数。如果在一分钟内,同样IP的客户端分别调用api/values和api/values/1两个接口, 那么调用api/values/1的请求会被拒绝掉。
IpThrottling = true,
// 如果配置了端点限流,同一秒内你也访问api/values/1了,请求将不会被拒绝,因为它们走的是不同的路由
EndpointThrottling = true
},
Repository = new MemoryCacheRepository()
};
config.MessageHandlers.Add(throttling);//限流机制,消息处理器
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
/// 添加接口访问限制流量消息处理机制
/// </summary>
/// <param name="config"></param>
public static void Set(HttpConfiguration config)
{
//ThrottlingHandler完整使用手册: http://www.cnblogs.com/mushroom/p/4659200.html
ThrottlingHandler throttling = new ThrottlingHandler()
{
Policy = new ThrottlePolicy(perSecond: 2, perMinute: 60, perHour: 600, perDay: 1500)
{
//限制来自同IP请求的最大次数。如果在一分钟内,同样IP的客户端分别调用api/values和api/values/1两个接口, 那么调用api/values/1的请求会被拒绝掉。
IpThrottling = true,
// 如果配置了端点限流,同一秒内你也访问api/values/1了,请求将不会被拒绝,因为它们走的是不同的路由
EndpointThrottling = true
},
Repository = new MemoryCacheRepository()
};
config.MessageHandlers.Add(throttling);//限流机制,消息处理器
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
C# Code:
public static void ConfigurationTest(IAppBuilder appBuilder)
{
//加载WebApi服务器配置信息
HttpConfiguration config = new HttpConfiguration();
WebApiMessagesConfig.Set(config);//消息处理机制
//使用配置
appBuilder.UseWebApi(config);
appBuilder.UseStageMarker(PipelineStage.PostAcquireState);
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
{
//加载WebApi服务器配置信息
HttpConfiguration config = new HttpConfiguration();
WebApiMessagesConfig.Set(config);//消息处理机制
//使用配置
appBuilder.UseWebApi(config);
appBuilder.UseStageMarker(PipelineStage.PostAcquireState);
}
//来源:C/S框架网(www.csframework.com) QQ:23404761
CSFramework.WebApi安全机制

CSFramework.WebApi系统安全保障机制由以下九个部分组成:
1.User - 用户账号:通过用户账号和密码确保有效访问,系统支持用户账号、手机号、邮箱登录。
2.Token - 令牌机制:通过令牌机制确保有效访问。用户登录成功,系统自动分配随机令牌编号。
3.ApiKey - 开发者账号:WebApi接口常用安全机制,使用公钥+私钥加密方式,确保系统安全。
4.Data Sign - 数据签名:WebApi接口常用安全机制,使用公钥+私钥加密方式,确保系统安全。
5.Blacklist - 黑名单:针对黑名单用户限制访问或操作,此功能可配置使用。
6.Throttle - 限流控制:有效避免频繁访问、恶意访问WebApi接口,此功能可配置使用。
7.ApiLog - 接口访问日志:针对任何Http请求,服务端会记录接口访问记录,此功能可配置使用。
8.Login Log - 系统登录日志:记录用户登入或登出系统的信息。
9.数据加密/解密:提供CryptoHelper工具类,以及4种对称加密工具。
ASP.NET WebApi快速开发框架|APP后端框架-标准版V1.0
适用开发:快速搭建APP、B/S、C/S、微信小程序、公众号、Web站点等后端应用服务程序。
运行平台:Windows + .NET Framework 4.5
开发工具:Visual Studio 2015+,C#语言
数据库:Microsoft SQLServer 2008R2+(支持多数据库:Oracle/MySql)
产品介绍
CSFramework.WebApi是服务端快速开发框架(后端框架),借助ASP.NET WebAPI底层架构的强大编程能力,封装成为可复用的以及可定制开发的服务端软件模板,CSFramework.WebApi提供可复用的软件架构和开发包,为用户快速轻松搭建基于HTTP协议、HTTPS协议以及支持多种客户端(如:APP、B/S、C/S、微信公众号、微信小程序等)各种跨平台移动终端的服务端应用程序。
服务端应用开发、后端接口开发是软件项目重要工作环节,服务端注重业务逻辑、数据处理和数据分析、算法等方面的设计和服务,前端主要体现在用户体验、界面操作和数据采集方面。前端软件系统和后端服务架构共同搭建跨平台大型数据管理应用系统。

:


参考文档:
AspNet WebAPI后端框架消息处理机制(配置属性HttpConfiguration.MessageHandlers)
WebApi框架数据安全、信息安全与接口安全六大机制
CSFramework WebApi开发框架集成PostgreSql数据库及测试报告|C/S开发框架
CS软件授权注册系统|WebApi服务器介绍|C/S开发框架
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
CSFrameworkV6.1前端+WebApiV3后端测试报告(前后端分离)|C/S开发框架
C/S开发框架两种后台连接:直连模式与WebApi模式(ADODirect与WebApi)|C/S开发框架
CSFramework.WebApi框架提供两种登录接口(PC端登录、APP登录)|C/S开发框架
.NETCore WebApi运行报错:System.AggregateException:“Some services are not able to be constructed|C/S开发框架
.NETCore WebApi后端开发框架+达梦数据库测试报告|C/S开发框架
Postman工具设置Bearer Token与调试WebApi接口|C/S开发框架
.NET8 WebApi框架接口认证方式:Bearer Token/Jwt Token详解|C/S开发框架
代码生成器:直连模式+WebApi生成的源码集成到VS解决方案|C/S开发框架
CSFramework.WebapiV3(.NET7/NetCore) 系统安全及Token令牌介绍|C/S开发框架
.NETCore WebApi框架request/response模型介绍(req_XXX/res_XXX)|C/S开发框架
.NETCore WebApi框架:从appsettings.json 读取参数配置|C/S开发框架
AspNet WebAPI后端框架消息处理机制(配置属性HttpConfiguration.MessageHandlers)
WebApi框架数据安全、信息安全与接口安全六大机制
CSFramework WebApi开发框架集成PostgreSql数据库及测试报告|C/S开发框架
CS软件授权注册系统|WebApi服务器介绍|C/S开发框架
C/S软件授权注册系统V3.0(Winform+WebApi+.NET8+EFCore版本)|C/S开发框架
CSFrameworkV6.1前端+WebApiV3后端测试报告(前后端分离)|C/S开发框架
C/S开发框架两种后台连接:直连模式与WebApi模式(ADODirect与WebApi)|C/S开发框架
CSFramework.WebApi框架提供两种登录接口(PC端登录、APP登录)|C/S开发框架
.NETCore WebApi运行报错:System.AggregateException:“Some services are not able to be constructed|C/S开发框架
.NETCore WebApi后端开发框架+达梦数据库测试报告|C/S开发框架
Postman工具设置Bearer Token与调试WebApi接口|C/S开发框架
.NET8 WebApi框架接口认证方式:Bearer Token/Jwt Token详解|C/S开发框架
代码生成器:直连模式+WebApi生成的源码集成到VS解决方案|C/S开发框架
CSFramework.WebapiV3(.NET7/NetCore) 系统安全及Token令牌介绍|C/S开发框架
.NETCore WebApi框架request/response模型介绍(req_XXX/res_XXX)|C/S开发框架
.NETCore WebApi框架:从appsettings.json 读取参数配置|C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服

