首页 > 学院 > 开发设计 > 正文

短信验证码攻击问题

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

下一篇:屏幕分辨率

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表