短信验证码攻击问题

本文记述了一次短信接口遭受攻击的经历及应对措施。作者详细分析了攻击原因,并提出图文验证码、流程改进、接口签名、时间防护和IP防护等五种解决方案。最终选择了时间防护和IP防护作为应急措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        昨天突然收到短信服务提供商报警,说我们的短信接口遭受攻击,收到大量短信验证码通知。登录后台管理服务,发现确实收到攻击,正常一天的发送量不会超过100条,但昨天已经突破三千,并且还在上涨;登录服务器日志查看,也确实发现超出正常范围的访问请求。
        当时写接口的时候,用post请求,也就是想尽量不向攻击者暴露接口参数,但还是想得太简单了,攻击者均为职业选手,或称为黑客(虽然其实很低级),简单的post或get无法迷惑他们。当初设计接口的时候,http请求,仅包含手机号码在内的三个参数,服务器没有时间防护、签名校验等措施,基本属于“裸奔”状态,给“黑客”留下了漏洞。
         修复此漏洞的方法,整理下来,不外乎以下五种:
  1. 图文验证码:在发送验证码前,必须先进行图文识别,通过后才可发送验证码;除了有相当高的图文验证码识别技术,一般图文验证码是不容易被识别的,因此也是最有效的防攻击手段;
  2. 流程改进:在发送验证码前,进行其他认证操作,比如密码设置、身份识别、输入更多信息等,使得虚假信息无法正常发送。
  3. 接口签名:设置隐含的签名密钥,对接口请求参数进行签名,在服务器端进行签名有效性的验证。这种办法也是一种较为有效的方法,但密钥在客户端的安全需要得到保证。
  4. 时间防护:限制手机号码在指定时间的发送次数,比如60s或120s内仅允许一次发送、一天仅允许10次发送等,防止频繁发送;这种方式无法彻底解决短信攻击问题。
  5. ip防护:对发起发送请求的服务器ip进行限制。一般黑客发起攻击的服务器较为有限,当大批量的请求部署在服务器上时,后台会跟踪到频繁发送请求的黑客服务器ip地址,可以对其地址进行类似黑名单的管制。当发现同一个ip短期发送大量请求时,可以限制其访问。这种方式也无法彻底解决短信攻击问题。
        从效果上说,图文验证码最为可靠,其次改进流程,再次是接口签名,时间防护和ip防护有其局限性,但前三种均需要升级App客户端,并且在App上进行图文验证、改进流程都影响用户体验,后面两种可以直接在服务器端生效,因此本次方案我选择时间防护和ip防护。虽然无法彻底解决问题,甚至还会导致误杀问题,但对于我们的现状,还是可以起到显著作用。通过对日志和短信后台的分析,综合运用这两种方案,明显遏制了短信攻击问题。
        最后,我想,程序员不能偷懒,不能侥幸,“黑客”无处不在。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值