如何优雅实现接口防刷

简介: 一文讲清楚如何用redis实现接口防刷

背景

最近在学习redis,想到了之前的写的一个案例demo,实现了接口的流量防刷。主要是为了防止爬虫爬取接口,当然可以适用于那些需要进行流控的系统,shigen画了一张草图展示主要的原理和过程:

首先用户请求系统的接口,后端会有一个流控的拦截器,这里边主要是去获得请求的信息,用ip+URI作为redis的key,查询在redis中记录的次数,如果次数大于规定的单位时间的访问次数,就认为这是非法的请求了,就需要拦截了。那具体的代码该怎么设计呢》?下边是一份详细的代码案例。亮点在于:shigen使用了一个注解,支持接口的个性化设置。

代码实现

  • 自定义ReteLimit注解

其实就是两个核心参数seconds max 规定了单位时间内的最大访问次数。

  • 拦截器rateLimitIntercept

  • 注册到拦截器上

这一步很重要,不然我们自定义的拦截器会不生效。

  • 测试类测试

这里主要是写了一个接口实现测试,访问的时候返回随机生成的UUID字符串。为了测试的效果明显,我在@RateLimit上配置的是10s之内只能允许2次请求。那现在开始测试吧!

测试

依旧用到的是ab这个工具。

ab -c 2 -n 10 127.0.0.1:9000/rate/test

一起看看效果吧。

可以看到测试的报告,10个请求,8个失败,2个成功,数据库也存储了对应的key和value,很符合预期的效果。

页面的错误是这样的,也很符合预期。

好了,以上就是《如何优雅地实现接口防刷》的全部内容了,觉得不错的话,记得点赞 在看 分享 关注哈,这样就不会错过很多干货了。


shigen一起,每天不一样!

目录
相关文章
|
8月前
|
NoSQL 关系型数据库 MySQL
接口防刷 && 接口幂等性问题
接口防刷 && 接口幂等性问题
98 0
|
8月前
|
SQL 安全 API
api接口是什么意思,api接口该如何防护呢?
api接口是什么意思,api接口该如何防护呢?
|
监控 安全 测试技术
敏感接口防刷规范及定责
在工作中有时候会遇到敏感接口被刷的情况,主要是这些敏感接口没有做防刷处理
|
6月前
JeecgBoot 短信验证码接口,如何实现防刷机制?
短信接口防刷,主要通过两个方面来实现:一个是短信接口加签和时间戳;另外针对短信接口,增加防刷 check 机制
102 1
登录接口梳理(如何看接口发出那些请求)
登录接口梳理(如何看接口发出那些请求)
|
8月前
|
监控 JavaScript 应用服务中间件
匿名用户访问的接口或者无登录态场景下接口防刷的解决方案
匿名用户访问的接口或者无登录态场景下接口防刷的解决方案
119 0
|
存储 监控 安全
关于 API 安全你需要知道的那些事,不知道会后悔!接口被恶意调用,数据被篡改等问题
回到正题,不管是 app,还是各个访问终端的入口,作为最终承载交互数据的来源 — API 接口,无疑需要对数据的安全访问提供最终的支撑和保障。接下来,让我们花点时间来聊聊关于 API 接口安全的那些事吧。
|
消息中间件 安全 JavaScript
优雅的接口防刷处理方案! 上
优雅的接口防刷处理方案! 上
|
安全 NoSQL Redis
优雅的接口防刷处理方案! 下
优雅的接口防刷处理方案! 下
|
JavaScript 小程序 NoSQL
优雅的接口防刷处理方案 上
优雅的接口防刷处理方案 上

热门文章

最新文章