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 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 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![]() ![]() ![]() ![]()
|