SpringBoot+Redis+Lua怎么防止IP重复防刷攻击
导读:本文共7531.5字符,通常情况下阅读需要25分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 黑客或者一些恶意的用户为了攻击你的网站或者APP。通过肉机并发或者死循环请求你的接口。从而导致系统出现宕机。针对新增数据的接口,会出现大量的重复数据,甚至垃圾数据会将你的数据库和CPU或者内存磁盘耗尽,直到数据库撑爆为止。针对查询的接口。黑客一般是重点攻击慢查询,比如一个SQL是2S。只要黑客一致攻击,就必然造成系统被拖垮,数据库查询全都被阻塞,连接一直得不到释... ...
目录
(为您整理了一些要点),点击可以直达。黑客或者一些恶意的用户为了攻击你的网站或者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重复防刷攻击的详细内容,希望对您有所帮助,信息来源于网络。