如何防止接口被恶意刷量?

为了防止被恶意刷量,本能地想到要用限流。

当然,除了限流,还有其他的一些方式:

1.在前后端约定一套加密算法和一个密钥

在前端把所有参数按照字母进行排序,再加上密钥生成一个签名,将其放在请求头里传给后端。

在后端用和前端一样的规则生成一个签名,如果两个签名对不上,很明显参数在传输的过程中被篡改了,可以直接拒绝,从而防止攻击者随意地修改参数来刷接口。

2.如果攻击者截获可一个合法的请求包,在改不了参数的懊恼下,他直接疯狂地重复发送这个包。这种攻击方式的解决办法是:

在后端先对时间戳进行校验,如果是超过了60秒的请求,则直接丢弃;

如果请求是在60秒以内的,再检查随机数是否在Redis中已经存在,如果是已经存在,说明这是个重复请求,直接拦截掉。

3.当系统检测到某个用户存在频率稍高,但是还没到限流阈值的异常行为或者在进行注册、领券等较为敏感的操作时,强制弹出滑块验证码,从而对人和脚本进行区分。

4.如果发现某个IP存在于IP黑名单或者用户的ID黑名单中,可以直接在网关层对这个IP进行封禁,不让它进入到业务层。

相关推荐
jieyucx2 分钟前
Go 零基础数据结构:顺序表(像「排抽屉」一样学增删改查)
java·数据结构·golang
曦夜日长3 分钟前
C++ STL容器string(一):string的变量细节、默认函数的认识以及常用接口的使用
java·开发语言·c++
代码中介商6 分钟前
C++ STL 标准模板库完全指南:从容器到迭代器
开发语言·c++·stl
winner88818 分钟前
C++ 构造函数、析构函数、虚函数、虚析构
开发语言·c++
北山有鸟10 分钟前
IS_ERR 判断出错后,再用 PTR_ERR 把它强制转换回 int 型的错误码作为函数的返回值。
java·开发语言
格林威14 分钟前
工业视觉检测:提供可视化UI调试工具的实现方式是什么?
开发语言·人工智能·数码相机·ui·计算机视觉·视觉检测·工业相机
phltxy16 分钟前
深度解析:Spring Cloud Gateway 从入门到实战
java·开发语言
HAPPY酷20 分钟前
从Public到Private:UE5 C++类创建路径差异全解析
java·c++·ue5
AI进化营-智能译站25 分钟前
ROS2 C++开发系列08-传感器数据缓存与指令解析方式之数组、向量与字符串实战
开发语言·c++·缓存·ai
许彰午28 分钟前
CacheSQL(一):手写数据库的工程化重生
java·数据库·缓存