如何防止被恶意刷接口

教你如何实现接口防刷 我们在浏览网站后台的时候,假如我们频繁请求,那么网站会提示的字样,那么这个功能究竟有什么用呢,又是如何实现的呢?其实这就是接口防刷的一种处理方式,通过在一定时间内限制同一用户对同一个接口的请求次数,其目的是为了防止恶意访问导致服务器和数据库的压力增大,也可以防止用户重复提交。 阅读详情

前言

在面试时,经常会被问一个问题:如何防止别人恶意刷接口?

这是一个非常有意思的问题,防范措施挺多的。今天这篇文章专门跟大家一起聊聊,希望对你会有所帮助。

图片

1 防火墙

防火墙是网络安全中最基本的安全设备之一,主要用于防止未经授权的网络访问和攻击。

防火墙可以防止的攻击行为包括:

  • 无效数据包:防火墙可以识别和过滤掉无效的数据包,如错误的 IP 地址、伪造的数据包和无法识别的协议等。

  • DOS 和 DDOS 攻击:防火墙可以使用不同的技术来检测和阻止 DOS 和 DDOS 攻击,如阻止大量 TCP/UDP 连接、IP 地址过滤和流量限制等。

  • 病毒和蠕虫攻击:防火墙可以使用特定的病毒和蠕虫检测技术,如签名检测、行为检测、模式识别等,来防止这些恶意软件的传播。

  • 网络钓鱼和欺骗攻击:防火墙可以检测和防止网络钓鱼和欺骗攻击,如防止虚假登录页面和欺骗的网站等。

  • 恶意流量攻击:防火墙可以检测和防止恶意流量攻击,如过滤掉带有恶意载荷的数据包和防止被黑客利用的端口。

  • 网络侦察攻击:防火墙可以使用一些技术来防止网络侦察攻击,如防止扫描、端口扫描和漏洞利用等。

防火墙主要用于过滤和控制网络流量,以保护网络安全。

2 验证码

对于一些非常重要的接口,在做接口设计的时候,要考虑恶意用户刷接口的情况。

最早的用户注册接口,是需要用图形验证码校验的,比如下面这样的:

图片

用户只需要输入:账号名称、密码和验证码即可,完成注册。

其中账号名称作为用户的唯一标识。

但有些图形验证码比较简单,很容易被一些暴力破解工具破解。

由此,要给图形验证码增加难道,增加一些干扰项,增加暴力破解工具的难道。

但有个问题是:如果图形验证码太复杂了,会对正常用户使用造成一点的困扰,增加了用户注册的成本,让用户注册功能的效果会大打折扣。

因此,仅靠图形验证码,防止用户注册接口被刷,难道太大了。

后来,又出现了一种移动滑块形式的图形验证方式,安全性更高。

图片

此外,使用验证码比较多的地方是发手机短信的功能。

发手机短信的功能,一般是购买的云服务厂商的短信服务,按次收费,比如:发一条短信0.1元。

如果发送短信的接口,不做限制,被用户恶意调用,可能会产生非常昂贵的费用。

3 鉴权

对于有些查看对外的API接口,需要用户登录之后,才能访问。

这种情况就需要校验登录了。

可以从当前用户上下文中获取用户信息,校验用户是否登录。

如果用户登录了,当前用户上下文中该用户的信息不为空。

否则,如果用户没登录,则当前用户上下文中该用户的信息为空。

对于有些重要的接口,比如订单审核接口,只有拥有订单审核权限的运营账号,才有权限访问该接口。

我们需要对该接口做功能权限控制。

可以自定义一个权限注解,在注解上可以添加权限点。

在网关层有个拦截器,会根据当前请求的用户的权限,去跟请求的接口的权限做匹配,只有匹配上次允许访问该接口。

4 IP白名单

对于有些非常重要的基础性的接口,比如:会员系统的开通会员接口,业务系统可能会调用该接口开通会员。

会员系统为了安全性考虑,在设计开通会员接口的时候,可能会加一个ip白名单,对非法的服务器请求进行拦截。

这个ip白名单前期可以做成一个Apollo配置,可以动态生效。

如果后期ip数量多了的话,可以直接保存到数据库。

只有ip在白名单中的那些服务器,才允许调用开通会员接口。

这样即使开通会员接口地址和请求参数被泄露了,调用者的ip不在白名单上,请求开通会员接口会直接失败。

除非调用者登录到了某一个白名单ip的对应的服务器,这种情况极少,因为一般运维会设置对访问器访问的防火墙。

当然如果用了Fegin这种走内部域名的方式访问接口,可以不用设置ip白名单,内部域名只有在公司的内部服务器之间访问,外面的用户根本访问不了。

但对于一些第三方平台的接口,他们更多的是通过设置ip白名单的方式保证接口的安全性。

5 数据加密

以前很多接口使用的是HTTP(HyperText Transport Protocol,即超文本传输协议)协议,它用于传输客户端和服务器端的数据。

虽说HTTP使用很简单也很方便,但却存在以下3个致命问题:

使用明文通讯,内容容易被窃听。不验证通讯方的真实身份,容易遭到伪装。无法证明报文的完整性,报文很容易被篡改。为了解决HTTP协议的这些问题,出现了HTTPS协议。

HTTPS协议是在HTTP协议的基础上,添加了加密机制:

SSL:它是Secure Socket Layer的缩写, 表示安全套接层。TLS:它是Transport Layer Security的缩写,表示传输层安全。HTTPS = HTTP + 加密 + 认证 + 完整性保护。

为了安全性考虑,我们的接口如果能使用HTTPS协议,尽量少使用HTTP协议。

如果你访问过一些大厂的网站,会发现他们提供的接口,都是使用的HTTPS协议。

6 限流

之前提到的发送短信接口,只校验验证码还不够,还需要对用户请求做限流。

从页面上的验证码,只能限制当前页面的不能重复发短信,但如果用户刷新了页面,也可以重新发短信。

因此非常有必要在服务端,即:发送短信接口做限制。

我们可以增加一张短信发送表。

该表包含:id、短信类型、短信内容、手机号、发送时间等字段。

图片

有用户发送短信请求过来时:

先查询该手机号最近一次发送短信的记录 如果没有发送过,则发送短信。如果该手机号已经发送过短信,但发送时间跟当前时间比超过了60秒,则重新发送一条新的短信。如果发送时间跟当前时间比没超过60秒,则直接提示用户操作太频繁,请稍后重试。这样就能非常有效的防止恶意用户刷短信的行为。

但还是有漏洞。

比如:用户知道在60秒以内,是没法重复发短信的。他有个程序,刚好每隔60秒发一条短信。

这样1个手机号在一天内可以发:60*24 = 1440 条短信。

如果他有100个手机号,那么一天也可以刷你很多条短信。

由此,还需要限制每天同一个手机号可以发的短信次数。

其实可以用redis来做。

用户发短信之后,在redis中保存一条记录,key是手机号,value是发短信的次数,过期时间是24小时。

这样在发送短信之前,要先查询一下,当天发送短信的次数是否超过10次(假设同一个手机号一天最多允许发10条短信)。

如果超过10次,则直接提示用户操作太频繁,请稍后重试。

如果没超过10次,则发送短信,并且把redis中该手机号对应的value值加1。

短信发送接口完整的校验流程如下:

图片

7 监控

为了防止被别人恶意刷接口,对接口的调用情况进行监控,是非常有必要的。

我们的程序中可以将用户的请求记录,打印到相关日志中。

然后有专门的程序,统计用户接口的调用情况,如果发现有突增的流量,会自动发短信或者邮件提醒。

有了监控之后,我们可以及时发现异常的用户请求。

后面可以进行人工干预处理。

8 网关

为了保证我们接口的安全性,可以提供统一的API网关,它可以实现过滤、鉴权、限流等功能。

用户请求我们的API接口时,需要先经过API网关,它转发请求到具体的API接口。

图片

有了API网关层,可以保护API接口。

防止暴力破解ssh的四种方法 防止暴力破解的四种方法 阅读详情

相关推荐

5 分钟快速上手图形验证码,防止接口被恶意刷量!

大家好,我是程序员小白条,今天来给大家介绍一个快速实现图形验证码的优秀框架 AJ-Captcha。

qq_67358181的博客 2250

优雅的接口防刷处理方式,看这一篇就够了

优雅的接口防刷处理方式

小学生波波 4827

记一次wireshark抓取QQ好友IP和火绒抓取微信IP

事情是这样的,,上个周,手机离奇的被盗,但没有关机,为了找回手机,粗学了一手QQ抓ip的手段。 这里我就直接做个演示,解析关键的点。 三种思路i. wireshark 抓取手机在线IPii 火绒抓取 微信在线接听IPiii 火绒抓取 微信在线不接听IP i. wireshark 抓取手机在线IP wireshark抓好友QQ的ip要求和对方打语音的时候要手机在线。 这里说一下,打语音和视频是直接能和对方建立连接,如果发文件,是直接发给腾讯的,抓不到包。 1.打开wireshark,通过电脑Tim给对方打语音

qq_29437513的博客 1万+

接口如何防止被刷,教你有效的8种方法

现在越来越多的应用程序和服务都提供了API接口,使得开发人员可以方便地与这些应用程序和服务进行交互。但是,由于API接口是公开的,因此很容易被黑客利用,对系统造成损害。为了确保API接口的安全性,我们需要采取一些措施,例如使用签名机制和限流机制来增强接口的安全性。在本文中,我们将介绍如何使用PHP实现这些措施,并防止API接口被恶意刷。

m0_66326520的博客 4489

树莓派4B:控制步进电机

文章目录准备阶段接线阶段树莓派程序 准备阶段 准备以下物品,淘宝都可以买到: 57步进电机 电源开关(220v转24v,3A,72W) 步进电机驱动器 电源线 电线 杜邦线 树莓派4B一套 具体型号如下: 接线阶段 整体:接线效果如下图 电源开关起220v转24v作用,很好接线,输出24v接入步进电机驱动器 步进电机驱动器的 A+ A- B+ B- 按提示接步进电机四线,步进电机上就会有说...

学习路上的鸭子的博客 1万+

keil4.72添加GD32F10x芯片

1. 下载 GD32F10x_AddOn_V2.0.1.rar,解压缩。 2. 安装 运行GigaDevice.GD32F10x_AddOn.2.0.0.exe 安装位置 再新建工程,发现已经有GD32F10x 3. 增加的文件分析 运行GigaDevice.GD32F10x_AddOn.2.0.0.exe后,在keil文件夹种增加文件如下: ...

TrueLink的博客 2764

如何优雅的实现接口防刷,看过来!!!

我们的签名就是为了防止攻击者对我们的timestamp人工更改所作的措施,毕竟攻击者从抓包到重放请求已经远超过了60S,这个时候参数中的timestamp已经过期了,如果攻击者更改时间错,则数字签名就会校验失败。因为,攻击者是不知道签名秘钥的。这一方案,timestamp和nonceStr两者作为签名的一部分传到了后端,鉴于上面的timestamp方案使得攻击者只能在60S内进行了重放攻击操作,我们有通过了nonceStr随机数进行了60S内只能进行一次接口调用,则保证了我们接口避免重放攻击的漏洞!

ybb_ymm的专栏 2127

芯片设计中的复位艺术——从异步复位同步释放到复位树构建

本文深入探讨了芯片设计中复位策略的核心技术与工程实践。重点解析了异步复位同步释放这一黄金方案的原理与优势,它通过复位同步器解决了异步复位释放时的时序风险。文章进一步阐述了如何构建稳健的复位树以应对大规模SoC设计,并分析了多时钟域与低功耗场景下的复位设计挑战,为提升芯片可靠性提供了系统性的方法论。

neovim7hacker的博客 488

如何防止被恶意刷接口?

有了API网关层,可以保护API接口。

okcross0的博客 963

金蝶ERP元数据解析:字段属性与表结构映射实战

本文深入解析金蝶ERP元数据的核心价值与应用实践,详细介绍了字段属性与表结构映射的关键技术。通过缓存获取与工具类直连两种方案对比,结合实际案例展示元数据在数据库校验、动态表单生成等场景的应用,帮助开发者高效解决二次开发中的常见问题。

weixin_33738555的博客 435

基于simulink构建一个完整的航空航天器姿态控制与导航仿真模型

航空航天器的姿态控制与导航系统是确保飞行器稳定运行和精确执行任务的核心技术。其目标是通过传感器获取飞行器的状态信息,并利用控制器调整飞行器的姿态,使其按照预定轨迹飞行。基于MATLAB/Simulink平台进行航空航天器姿态控制与导航系统的建模与仿真,可以帮助研究者验证算法性能并优化系统的动态响应。本项目旨在构建一个完整的航空航天器姿态控制与导航仿真模型,包括飞行器动力学建模、传感器模块设计、控制器实现以及导航算法仿真,并通过仿真分析其性能。

xiaoheshang_123的博客 273

api接口防刷的多种策略(防止恶意刷接口行为)

6.网关:对于我们提供所有api接口,可以提供统一的API网关,它可以实现过滤、鉴权、限流等功能。用户请求我们的API接口时,需要先经过API网关,它转发请求到具体的API接口。5.日志监控和分析:监控接口请求日志,对异常请求进行识别和分析。通过监控异常请求的IP地址、请求路径、请求参数等信息,可以及时发现恶意刷接口行为,并采取相应的防御措施。综上所述,以上是一些常见的防止恶意刷接口行为的方法,可以根据具体场景选择适合的防御策略或者组合使用多种方式来提高安全性。

w_l666的博客 1445

Android 12.0 kenel中修改rom系统内部存储的大小

在12.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,由于在产品后续订单中,有些产品是出口的,但是硬件方面已经定板,时间比较仓促,所以 就需要软件方面在rom内部存储的大小方面作假,修改rom真实的大小容量,所以就需要在kenel驱动部分来修改这部分的值最好了,接下来分析下计算rom容量的 相关代码,然后做出相关的修改,来实现功能

安卓兼职framework和app工程师的博客 1678

如何防止接口被恶意刷?

网络层:防火墙清洗DDoS、IP白名单拦截非法服务调用、HTTPS加密防抓包;网关层:统一入口,实现全局限流、黑名单、请求过滤、监控告警;身份层:登录鉴权、接口权限、开放API签名校验;人机层:滑块/短信验证码拦截自动化脚本;业务限流层:基于手机号/用户ID/IP做多维度时间窗口限流;事后兜底:实时监控异常流量,发现攻击后拉黑恶意账号/IP。

weixin_52803316的博客 362

【华为OD机试真题】29、组成最大数 | 机试真题+思路参考+代码解析 (C++、Java、Py、C语言、JS)

题目描述 >小组中每位都有一张卡片,卡片上是6位内的正整数,将卡片连起来可以组成多种数字,计算组成的最大数字

KJ.JK 2419

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

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

在后端用和前端一样的规则生成一个签名,如果两个签名对不上,很明显参数在传输的过程中被篡改了,可以直接拒绝,从而防止攻击者随意地修改参数来刷接口。2.如果攻击者截获可一个合法的请求包,在改不了参数的懊恼下,他直接疯狂地重复发送这个包。3.当系统检测到某个用户存在频率稍高,但是还没到限流阈值的异常行为或者在进行注册、领券等较为敏感的操作时,强制弹出。或者用户的ID黑名单中,可以直接在网关层对这个IP进行封禁,不让它进入到业务层。是否在Redis中已经存在,如果是已经存在,说明这是个重复请求,直接拦截掉。

博客 262

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

如何防止别人恶意刷接口?

本文介绍了8种提升接口安全性的关键技术措施:1)防火墙用于过滤网络流量,防范DDoS、病毒等攻击;2)验证码机制防止接口被刷,从图形验证码发展到更安全的滑块验证;3)鉴权系统通过权限注解实现接口访问控制;4)IP白名单限制重要接口的调用来源;5)采用HTTPS协议实现数据加密传输;6)限流机制通过时间窗口和次数限制防范短信接口被刷;7)监控系统实时检测异常流量;8)API网关统一实现安全过滤、鉴权和限流功能。这些措施形成了多层次的接口安全防护体系。

TTianYe的博客 433

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

秒杀活动中,Java如何防止恶意刷接口?

刷接口是指通过程序自动化、高频率地请求秒杀接口,达到“抢占资源”的目的。常见表现包括:使用脚本/爬虫/自动化工具发起请求模拟并发请求进行库存占用利用代理 IP 规避限流利用账号批量注册参与秒杀。

m0_73735578的博客 425

api接口限流 防止恶意刷接口

api限流的场景 限流的需求出现在许多常见的场景中 1.秒杀活动,有人使用软件恶意刷单抢货,需要限流防止机器参与活动 2.某api被各式各样系统广泛调用,严重消耗网络、内存等资源,需要合理限流 3.淘宝获取ip所在城市接口、微信公众号识别微信用户等开发接口,免费提供给用户时需要限流,更具有实时性和准确性的接口需要付费。 api限流实战 首先我们编写注解类AccessLimit,使用注解方式在方法上...

white_ShiKu的博客 3256
上一篇: 下一代Windows系统曝光:基于GPT-4V,Agent跨应用调度,代号UFO
下一篇: 程序员新人频繁使用count(*),被组长批评后怒怼:性能并不拉垮!
IT界那些事儿
博客等级 码龄6年 2万+粉丝 22原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值