对接口限流方案

1.前言

在项目中,有些接口是无需安全验证即可访问。既然直接暴露出来,就意味着不安全,就会面临恶意访问,盗刷流量等问题。面对恶意访问,往往是通过程序对接口发送大量请求,轻者接口响应缓慢,重者造成服务器宕机,使得服务不能正常使用。

最常见的就是发送短信验证码,在用户注册时可发送短信验证码验证,在登录时使用手机号+短信验证码登录。对于用户的正常访问无需限制,主要是防止盗刷流量问题,下面通过几种方案来解决。

2.基于IP限流

获取请求的IP,限制请求在一段时间内的访问次数。

具体用法详见SpringBoot对接口限制IP访问次数

这种方式可有效防止流量盗刷,但不能完全阻止。原因是可通过频繁的变换IP来躲过这种安全限制。

3.动态URL

核心思想是将接口动态化,可以是接口URL动态化,也可以是参数动态化

  • URL动态化。使用一定的策略定期的变化接口url,但这种方式对项目的维护过于麻烦。
  • 参数动态化。在传递参数时,添加一个参数,按照一定的规则进行变化,前后端同时校验。一种常用的参数是传递时间戳,前后端共同约定参数的签名生成算法。如key=MD5(手机号 + 当前时间/分钟),默认使用60秒的缓冲时间,当然也可以使用其他时间,视需求而定。但是这种方式也不是百分比安全,对于前端,若应用是web则可通过js查找并分析出签名算法,若是APP应用则可通过反编译程序分析签名算法,这两种方式都可伪造参数进行恶意访问。
posted @ 2022-07-03 14:55  钟小嘿  阅读(811)  评论(0编辑  收藏  举报