后端防接口被刷

1)防火墙

防火墙也是互联网安全攻防中重要的屏障,我们通过配置访问规则,可以限制只有被允许的IP才可以进行访问。

防火墙还可以识别和阻止DDoS攻击,通过识别并过滤恶意流量请求,防火墙可以有效的防御,保护接口正常运行。

 

2)用户认证

在调用接口之后,需要对接口中的身份信息进行认证和授权,只有授权过的合法用户才可继续访问。

常用的有OAtuh2.0等标准协议,通过token的形式进行身份验证,确保用户已经登陆或者已经具备该接口的访问权限,从而限制接口的访问。

我们可以自定义一个注解,在注解上添加权限授权标识,并在网关上增加权限拦截器,对增加了该权限注解的接口进行权限验证,只有匹配该接口所需要的权限才可以访问。

 

3)访问频率

增加访问频率限制,限制同一个用户在一段时间内的请求接口次数。我们可以根据用户角色的不同设置不同的等级限制。

访问频率这块我们可以都适用动态配置的,可以考虑一下两点方向:

  • 访问策略限制可以配置调整。

  • 限制算法与业务影响最小,既能有效防止恶意请求,也不影响正常用户访问。

 

4)验证码

比如登陆时用的短信验证码,页面限制60秒发送一次,大大延长用户操作的时间,但是当用户刷新了页面,对于当前页面来说,用户还是可以继续点击发送短信验证码,所以服务端我们也要做访问限制。

当请求进来后,以用户手机号为key,判断最近发送验证码的时间,如果大于60s,就发送短信,反之拒绝。

服务端做限制,以手机号发送验证码举例,不仅要限制发送验证的频率,还要限制每天同一个手机号最多发送几次验证码。

以用户手机号以及当天日期为key,增加当天该手机号发送验证码次数,超过一定次数拒绝发送短信。

 

5)IP白名单和黑名单

对于信任的IP地址直接加入白名单,对于明确知道恶意请求的 IP,直接加入黑名单。(如何知道是恶意请求,就是下一个手段,监控)

白名单黑名单的配置我们可以使用配置中心,Nacos 或者 Apollo,这样当线上使用时可以动态的增加删除,使其动态生效。

 

6)监控

在系统中增加监控系统,对接口的请求记录保存日志,通过对日志进行分析,发现突发流量时使用限制访问频率或者封禁IP等手段,然后同步发送短信或者邮件提醒管理员。

监控的范围最好是覆盖广,相当于全接口的监控,然后是实时、准确,最好有可视化的监控报告,帮助管理员或者运维人员排查。

 

7)数据加密

为何能自动化的使用程序刷接口,就是因为通过各种手段破解了我们接口所需要的参数以及认证信息,那么我们对接口进行加密就可以增加这个过程的难度,让其再去破译该接口就变的没有那么容易。

加密有多种,首先可以数据加密,也就是传的参数,前后端约定加密算法。然后是使用HTTPS安全传输协议,对接口传输的数据进行加密,防止数据被中间人窃取篡改,保证接口安全。

 

8)用户行为分析

在监控系统的基础上,增加用户分析,对用户的特点行为进行分析,发现异常行为时作出相应的处理。但是需要确保不能影响到正常的用户,也不能使用单一的条件进行分析,需要多方位的,比如用户的登录设备、IP、时间点等。

 

补充知识:

接口的幂

在后端开发中,接口的“幂”并不是一个标准术语,因此可能需要一些上下文来准确理解您的问题。不过,如果这里的“幂”指的是接口的“幂等性”(Idempotency),那么这是一个非常重要的概念,特别是在设计RESTful API时。

幂等性意味着一个操作可以多次执行,而结果都相同,不会因为重复执行而产生额外的影响。换句话说,无论你调用一次还是多次相同的API请求,系统状态和响应都应该保持一致。这对于保证API的可靠性和避免因网络重传或用户误操作导致的不良后果至关重要。

具体到HTTP方法上:get, head , put, delete

方法通常是幂等的。

  • GET 请求用于获取资源,多次请求不会改变服务器状态。

  • HEAD 类似于 GET,但只返回头部信息,同样幂等。

  • PUT 请求用于替换已有资源或创建特定URI下的新资源(如果不存在),无论请求一次还是多次,最终服务器上的资源状态是一样的。

  • DELETE 请求用于删除资源,一旦资源被删除,再次发送同样的请求,服务器会确认资源已经删除,状态不变。

相比之下,POST 请求通常不是幂等的,因为它用于创建新的资源,每次请求都会导致新的资源被创建,产生不同的结果。

在设计API时,明确每个接口的幂等性对于客户端开发者来说非常重要,因为它影响着他们如何处理错误重试逻辑和其他异常情况。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/853831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

模拟电子技术基础(二)--PN结

PN结的本质 芯片都是由硅晶体制成,单个硅原子最外层有带有4个电子 在纯硅当中这些电子会两两形成共价键,此时周围形成非常稳定的八电子结构 在一个回路中,灯泡不亮,不导通,因为电池无法吸引其中的电子离开&#xff0c…

面向对象程序设计》第5章 多态(选择 判断 填空)

1-1 在类的定义中,前面有virtual关键字的成员函数就是虚函数。 T F | 参考答案 答案 T 2分 1-2 通过基类指针调用基类和派生类中的同名虚函数时,若该指针指向一个基类的对象,那么被调用的是基类的虚函数。 T F | 参考答案 答案 T 2分 1-3 通过基类指针调用…

Zombie Animations Set

僵尸动画合集,包括成对攻击/抓取、各种移动方式、爬行、击中反应、死亡动画等。 生产说明 动画总数:99(包括22个位置变化) 配对动画:36 攻击次数:6次 爬网:9 命中反应:6 空转:14 行程2 跑步次数:9次 短跑:2 匝数:3 步行次数:12次 免责声明 任何游戏玩法蓝图都不包…

【JavaScript】MDN

一、初识 1.1 基础 1.1.1 语言速成课 1.1.1.1 变量 ​ 变量是存储值的容器。首先用let关键字声明一个变量,后面跟着你给变量的名字 ​ 变量命名区分大小写 ​ 分号在JavaScript中是用来分隔语句的,但是如果语句后面有一个换行符(或者在{block}中只…

力扣每日一题 6/16 字符串 + 随机一题 动态规划/数学

博客主页:誓则盟约系列专栏:IT竞赛 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 521.最长特殊序列 I【简单】 题目: 给你两个字符串 a 和 b&am…

【猫狗分类】Pytorch VGG16 实现猫狗分类4-开始训练

背景 现在,我们已经完成了,数据集的清洗,标签的制作,也把VGG16的模型建立好了。那接下来,我们应该把数据,放到我们搭建的vgg16的模型里面,让模型针对这些猫和狗的图片,去进行训练&a…

面试题 17.17. 多次搜索

链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a; class Solution { private:struct Trie {Trie() {end false;index -1;next.resize(26);}bool end;int index;std::vector<std::unique_ptr<Trie>> next;};void insert_trie(int in…

5.3.2_1 线索二叉树的概念

&#x1f44b; Hi, I’m Beast Cheng &#x1f440; I’m interested in photography, hiking, landscape… &#x1f331; I’m currently learning python, javascript, kotlin… &#x1f4eb; How to reach me --> 458290771qq.com 喜欢《数据结构》部分笔记的小伙伴可以…

接口和抽象类:如何使用普通类模拟接口和抽象类

目录 1.引言 2.抽象类和接口的定义与区别 3.抽象类和接口存在的意义 4.模拟实现抽象类和接口 5.抽象类和接口的应用场景 1.引言 在面向对象编程中&#xff0c;抽象类和接口是两个经常被提及的语法概念&#xff0c;也是面向对象编程的四大特性&#xff0c;以及很多设计模式…

借报告Team ID错误谈谈Mac app文件签名与公证

文章目录 目的起因流程熟悉本地证书、认证证书申请在钥匙串中创建要公证app的profile(公证的时候会用到)程序打包后App文件进行app签名压缩打包公证公证变化在WWDC19, 苹果在MacOS 10.14之后引入了公证(Notarization)这一机制来提升安全性. 主要分以下几步新的公证workflow公…

使用KVM制作镜像

资源列表 操作系统 IP Centos7&#xff0c;桌面版 192.168.10.57 安装KVM 安装软件包 yum -y install qemu-kvm qemu-kvm-tools qemu-img bridge-utils libvirt virt-install virt-manager 检查有否支持虚拟化 grep -e vmx -e svm /proc/cpuinfo #VMX是英特尔版本&…

【CT】LeetCode手撕—88. 合并两个有序数组

目录 题目1- 思路2- 实现⭐88. 合并两个有序数组——题解思路 2- ACM实现 题目 原题连接&#xff1a;88. 合并两个有序数组 1- 思路 模式识别 模式1&#xff1a;两个有序数组合并 ——> 双指针模式2&#xff1a;返回结果填充到 nums1[mn] ——> 需要开辟新的数组空间 …

lxml库在爬虫领域的贡献及应用

重头戏lxml库里面的xpath 一段代码给各位开开胃 这段代码首先导入了lxml库中的etree模块&#xff0c;然后定义了一个包含HTML内容的字符串html。接着&#xff0c;我们使用etree.HTML()函数解析这个HTML字符串&#xff0c;得到一个表示整个HTML文档的树形结构。最后&#xff0c;…

C# 字段 属性 索引器

字段声明字段字段初始化静态字段常量字段只读字段字段的访问然而 属性声明属性自动实现的属性只读属性只写属性属性的逻辑处理属性的访问修饰符属性和字段的区别属性的用途总结 索引器索引器的基本语法使用索引器索引器的关键点语法参数访问和设置异常处理性能重载使用场景封装…

qt 实现模拟实际物体带速度的移动(水平、垂直、斜角度)——————附带完整代码

文章目录 0 效果1 原理1.1 图片旋转1.2 物体带速度移动 2 完整实现2.1 将车辆按钮封装为一个类&#xff1a;2.2 调用方法 3 完整代码参考 0 效果 实现后的效果如下 可以显示属性&#xff08;继承自QToolButton&#xff09;: 鼠标悬浮显示文字 按钮显示文字 1 原理 类继承…

Folx软件安装教程及最新版下载

简介&#xff1a; Folx Pro是一款适合Mac的专业下载工具也是一款BT下载器&#xff0c;Folx中文版有一个支持Retina显示的现代界面&#xff0c;提供独特的系统排序、存储下载内容与预览下载文件。Folx中文官网提供Folx教程、激活码、下载。 安 装 包 获 取 地 址&#xff1a; …

远程连接管理服务SHH

1.了解服务端和客户端 服务端&#xff1a;提供服务 客户端&#xff1a;享受服务 思考: 我们通过网络是如何找到我们想要访问的服务的? IP(提供服务的服务器)Port(找到相应的服务) 2.了解端口号的设定 说明:端口号只有整数&#xff0c;范围是从0 到65535 1&#xff5e;2…

使用RANSAC来拟合直线

RANSAC是“RANdom SAmple Consensus”的缩写&#xff0c;是一种迭代方法&#xff0c;用于数据中估计统计参数或几何模型的算法。它通过给定数据集中随机选择样本并使用样本计算模型&#xff0c;然后测试模型的可能性来工作。如果一个模型通过了足够数量的测试&#xff0c;则认为…

warning LNK4017: DESCRIPTION 语句不支持目标平台;已忽略

文章目录 warning LNK4017: DESCRIPTION 语句不支持目标平台&#xff1b;已忽略概述笔记备注END warning LNK4017: DESCRIPTION 语句不支持目标平台&#xff1b;已忽略 概述 基于ATL的COM DLL导出函数&#xff0c;无法用__declspec(dllexport)直接在函数上标记为导出函数。 只…

【Python】torch_scatter安装报错

torch_cluster&#xff0c;torch_scatter&#xff0c;torch_sparse则在成功安装torch后&#xff0c;使用指令 pip install --no-index torch_scatter -f https://pytorch-geometric.com/whl/torch-1.x.0cu10x.html&#xff08;torch_cluster可直接修改为另外两样&#xff09;进…