防止接口被刷 接口安全

1. 如何防止被恶意刷接口?

防止接口被刷 接口安全

【防火墙】

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

  • 无效数据包:防火墙可以识别和过滤掉无效的数据包,如错误的 IP 地址、伪造的数据包和无法识别的协议等。
  • DOS 和 DDOS 攻击:防火墙可以使用不同的技术来检测和阻止 DOS 和 DDOS 攻击,如阻止大量 TCP/UDP 连接、IP 地址过滤和流量限制等。
  • 病毒和蠕虫攻击:防火墙可以使用特定的病毒和蠕虫检测技术,如签名检测、行为检测、模式识别等,来防止这些恶意软件的传播。
  • 网络钓鱼和欺骗攻击:防火墙可以检测和防止网络钓鱼和欺骗攻击,如防止虚假登录页面和欺骗的网站等。
  • 恶意流量攻击:防火墙可以检测和防止恶意流量攻击,如过滤掉带有恶意载荷的数据包和防止被黑客利用的端口。
  • 网络侦察攻击:防火墙可以使用一些技术来防止网络侦察攻击,如防止扫描、端口扫描和漏洞利用等。
  • 防火墙主要用于过滤和控制网络流量,以保护网络安全。

【验证码】

最早的用户注册接口,是需要用图形验证码校验的,给图形验证码增加难道,增加一些干扰项,增加暴力破解工具的难道。但有个问题是:如果图形验证码太复杂了,会对正常用户使用造成一点的困扰,增加了用户注册的成本,让用户注册功能的效果会大打折扣。

因此,仅靠图形验证码,防止用户注册接口被刷,难道太大了。后来,又出现了一种移动滑块形式的图形验证方式,安全性更高。

防止接口被刷 接口安全

此外,使用验证码比较多的地方是发手机短信的功能。如果发送短信的接口,不做限制,被用户恶意调用,可能会产生非常昂贵的费用。

【鉴权】

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

我们需要对该接口做功能权限控制。可以自定义一个权限注解,在注解上可以添加权限点。

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

【IP白名单】

对于有些非常重要的基础性的接口,比如:会员系统的开通会员接口,业务系统可能会调用该接口开通会员。会员系统为了安全性考虑,在设计开通会员接口的时候,可能会加一个ip白名单,对非法的服务器请求进行拦截。

这个ip白名单前期可以做成一个Apollo配置,可以动态生效。如果后期ip数量多了的话,可以直接保存到数据库。只有ip在白名单中的那些服务器,才允许调用开通会员接口。

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

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

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

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

【数据加密】

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

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

对接口返回的敏感数据进行加密。

【限流】

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

我们可以增加一张短信发送表。在服务端防止恶意用户刷短信的行为,如限制60s发送一次,且1天最多发送10次。可以用redis来做。用户发短信之后,在redis中保存一条记录,key是手机号,value是发短信的次数,过期时间是24小时。

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

防止接口被刷 接口安全

【监控】

为了防止被别人恶意刷接口,对接口的调用情况进行监控,是非常有必要的。我们的程序中可以将用户的请求记录,打印到相关日志中。然后有专门的程序,统计用户接口的调用情况,如果发现有突增的流量,会自动发短信或者邮件提醒。有了监控之后,我们可以及时发现异常的用户请求。后面可以进行人工干预处理。

【网关】

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

用户请求我们的API接口时,需要先经过API网关,它转发请求到具体的API接口。有了API网关层,可以保护API接口。

防止接口被刷 接口安全

Tags: 接口

添加新评论