SpringBoot+Redis+Lua怎么防止IP重复防刷攻击(lua,redis,springboot,开发技术)

时间:2024-05-06 00:43:36 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    SpringBoot%2BRedis%2BLua%E6%80%8E%E4%B9%88%E9%98%B2%E6%AD%A2IP%E9%87%8D%E5%A4%8D%E9%98%B2%E5%88%B7%E6%94%BB%E5%87%BB

黑客或者一些恶意的用户为了攻击你的网站或者APP。通过肉机并发或者死循环请求你的接口。从而导致系统出现宕机。

针对新增数据的接口,会出现大量的重复数据,甚至垃圾数据会将你的数据库和CPU或者内存磁盘耗尽,直到数据库撑爆为止。

针对查询的接口。黑客一般是重点攻击慢查询,比如一个SQL是2S。只要黑客一致攻击,就必然造成系统被拖垮,数据库查询全都被阻塞,连接一直得不到释放造成数据库无法访问。

具体要实现和达到的效果是:
需求:在10秒内,同一IP 127.0.0.1 地址只允许访问30次。
最终达到的效果:

分析:keylist = 127.0.0.1 expire 30 incr

分析1:用户ip地址127.0.0.1 访问一次 incr

分析2:用户ip地址127.0.0.1 访问一次 incr

分析3:用户ip地址127.0.0.1 访问一次 incr

分析4:用户ip地址127.0.0.1 访问一次 incr

分析10:用户ip地址127.0.0.1 访问一次 incr

判断当前的次数是否以及达到了10次,如果达到了。就时间当前时间是否已经大于30秒。如果没有大于就不允许访问,否则开始设置过期

第一步:lua文件

在resource/lua下面创建iplimit.lua文件

第二步:创建lua对象

第三步使用

其实还可以自己写一个自定义的注解,结合lua来实现限流
比如:@iplimit(time=10,limit=2)

#方法二:注解实现
需求:用户请求在一秒钟之内只允许2个请求。

核心是AOP

前面几步是一样的,lua脚本,lua对象,自定义redisltemplate。

1.redis依赖

2.lua脚本

3.创建lua对象

4.自定义redistemplate

5.自定义注解

6.自定义切面

7.在需要限流的方法上进行限流测试

本文:SpringBoot+Redis+Lua怎么防止IP重复防刷攻击的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Java中Object类常用的方法有哪些下一篇:

4 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18