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

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

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

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

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

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

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

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

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

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

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

相关推荐
历程里程碑21 小时前
Linux 库
java·linux·运维·服务器·数据结构·c++·算法
Wpa.wk21 小时前
接口自动化 - 接口鉴权处理常用方法
java·运维·测试工具·自动化·接口自动化
Pluchon21 小时前
硅基计划4.0 简单模拟实现AVL树&红黑树
java·数据结构·算法
2501_9160088921 小时前
深入解析iOS机审4.3原理与混淆实战方法
android·java·开发语言·ios·小程序·uni-app·iphone
wxin_VXbishe21 小时前
C#(asp.net)学员竞赛信息管理系统-计算机毕业设计源码28790
java·vue.js·spring boot·spring·django·c#·php
一个网络学徒21 小时前
python5
java·服务器·前端
workflower1 天前
业务需求-假设场景
java·数据库·测试用例·集成测试·需求分析·模块测试·软件需求
Dimpels1 天前
CANN ops-nn 算子解读:AIGC 批量生成中的 Batch 处理与并行算子
开发语言·aigc·batch
blueSatchel1 天前
U-Boot载入到DDR过程的代码分析
linux·开发语言·u-boot
专注VB编程开发20年1 天前
vb.net datatable新增数据时改用数组缓存
java·linux·windows