如何防止被恶意刷接口?

前言在面试时,经常会被问一个问题:如何防止别人恶意刷接口?
这是一个非常有意思的问题,防范措施挺多的 。今天这篇文章专门跟大家一起聊聊,希望对你会有所帮助 。

如何防止被恶意刷接口?

文章插图
图片
1 防火墙防火墙是网络安全中最基本的安全设备之一,主要用于防止未经授权的网络访问和攻击 。
防火墙可以防止的攻击行为包括:
  • 无效数据包:防火墙可以识别和过滤掉无效的数据包 , 如错误的 IP 地址、伪造的数据包和无法识别的协议等 。
  • DOS 和 DDoS 攻击:防火墙可以使用不同的技术来检测和阻止 DOS 和 DDOS 攻击,如阻止大量 TCP/UDP 连接、IP 地址过滤和流量限制等 。
  • 病毒和蠕虫攻击:防火墙可以使用特定的病毒和蠕虫检测技术,如签名检测、行为检测、模式识别等,来防止这些恶意软件的传播 。
  • 网络钓鱼和欺骗攻击:防火墙可以检测和防止网络钓鱼和欺骗攻击,如防止虚假登录页面和欺骗的网站等 。
  • 恶意流量攻击:防火墙可以检测和防止恶意流量攻击,如过滤掉带有恶意载荷的数据包和防止被黑客利用的端口 。
  • 网络侦察攻击:防火墙可以使用一些技术来防止网络侦察攻击,如防止扫描、端口扫描和漏洞利用等 。
【如何防止被恶意刷接口?】防火墙主要用于过滤和控制网络流量,以保护网络安全 。
2 验证码对于一些非常重要的接口,在做接口设计的时候 , 要考虑恶意用户刷接口的情况 。
最早的用户注册接口,是需要用图形验证码校验的,比如下面这样的:
如何防止被恶意刷接口?

文章插图
图片
用户只需要输入:账号名称、密码和验证码即可,完成注册 。
其中账号名称作为用户的唯一标识 。
但有些图形验证码比较简单 , 很容易被一些暴力破解工具破解 。
由此,要给图形验证码增加难道,增加一些干扰项 , 增加暴力破解工具的难道 。
但有个问题是:如果图形验证码太复杂了,会对正常用户使用造成一点的困扰,增加了用户注册的成本,让用户注册功能的效果会大打折扣 。
因此,仅靠图形验证码,防止用户注册接口被刷 , 难道太大了 。
后来,又出现了一种移动滑块形式的图形验证方式,安全性更高 。
如何防止被恶意刷接口?

文章插图
图片
此外 , 使用验证码比较多的地方是发手机短信的功能 。
发手机短信的功能,一般是购买的云服务厂商的短信服务 , 按次收费,比如:发一条短信0.1元 。
如果发送短信的接口,不做限制 , 被用户恶意调用,可能会产生非常昂贵的费用 。
3 鉴权对于有些查看对外的API接口,需要用户登录之后 , 才能访问 。
这种情况就需要校验登录了 。
可以从当前用户上下文中获取用户信息,校验用户是否登录 。
如果用户登录了,当前用户上下文中该用户的信息不为空 。
否则,如果用户没登录 , 则当前用户上下文中该用户的信息为空 。
对于有些重要的接口,比如订单审核接口,只有拥有订单审核权限的运营账号,才有权限访问该接口 。
我们需要对该接口做功能权限控制 。
可以自定义一个权限注解,在注解上可以添加权限点 。
在网关层有个拦截器,会根据当前请求的用户的权限,去跟请求的接口的权限做匹配 , 只有匹配上次允许访问该接口 。
4 IP白名单对于有些非常重要的基础性的接口,比如:会员系统的开通会员接口,业务系统可能会调用该接口开通会员 。
会员系统为了安全性考虑,在设计开通会员接口的时候 , 可能会加一个ip白名单,对非法的服务器请求进行拦截 。
这个ip白名单前期可以做成一个Apollo配置,可以动态生效 。
如果后期ip数量多了的话,可以直接保存到数据库 。
只有ip在白名单中的那些服务器 , 才允许调用开通会员接口 。
这样即使开通会员接口地址和请求参数被泄露了,调用者的ip不在白名单上,请求开通会员接口会直接失败 。


推荐阅读