APP网站如何防止短信验证码接口被攻击

很多网站APP老板在平台运行时除了遇到DDoS/CC等黑客攻击,短信接口接口会被黑客调用发动轰炸他人号码或长时间发送短信达到短信欠费的目的,那么如何防护呢,首先我们要知道

一、短信验证码是什么?

1.短信验证码是通过发送验证码到手机的一种有效的验证码系统。某些验证码接入商提供手机短信验证码服务,各网站通过接口发送请求到接入商的服务器,服务器发送随机数字或字母到手机中,由接入商的服务器统一做验证码的验证。通俗点讲呢就是在一些网站或者app上给你输入的手机号发送一条带有数字或字母验证码的短信。比如你在登陆某个app的时候就可以通过短信验证码来登陆。

2.短信验证码的适用场景有哪些:

(1)注册验证:注册验证是短信验证码最常见的应用场景。在注册的过程中,客户按照系统要求输入手机号码,系统会将动态验证码发送到给该手机号码,用户收到验证码后,将验证码数字按要求输入指定位置,完成注册验证。能够有效的防止恶意注册和重复注册。

(2)信息变更:系统用户在修改密码、手机号等个人账户信息时,为了确保为账户户主本人操作,保障用户的信息和财产安全,系统会要求必须经过短信验证才能进行修改。比如银行系统,在进入个人账户页面查看个人信息时,都必须经过验证才能打开相关页面。

(3)找回密码:为了账户安全,用户大多会给账户设置较为复杂的密码,也有一些系统会给密码的安全等级分级,以此督促用户设置更为复杂的密码来保障账户的安全。然而,越是复杂就越容易遗忘。虽然现在很多浏览器和手机系统都有记录密码自动登录的功能,但是这种记录都是存在时限的,一旦超过时限,仍然需要手动输入密码,对于这种情况,因为不常记忆,往往更容易遗忘。在加入手机验证码功能后,只需要向绑定的手机号码发送验证码短信,获取验证码就能成功修改密码,操作简单、快速。

(5)、动态登录:现在很多安全性要求比较高或盗号比较严重的网站,在登录时都会要求进行动态验证登录,即每次登录系统时,都需要从系统获取验证码短信,输入正确的验证码才能进入系统。前者如联通、移动、电信三大运营商的应用APP。后者如各类大型游戏网站,因大型游戏网站中的角色财富甚至角色本身都能通过某些操作换取现金,是许多通过盗号窃取财富的犯罪分子的首选。

以上就是短信验证码在各大网站系统最常见的四种应用场景。除此以外,短信验证码在网络投票、问卷调查、抽奖互动等需要保障一人一票的特殊场景中,也起到了重要作用。

二、为什么要对短信验证码进行防护?

短信验证码作为APP和网站最基础的需求,时常会被黑客恶意利用和进行短信轰炸。如果短信验证码接口和页面不做任何限制,黑客很容易利用一些恶意的短信轰炸软件对接口进行攻击,不停的对同一个号码或者N个号码重复发送验证码短信。短信验证码被攻击,不仅会对用户造成骚扰,引起投诉,更会浪费你的短信余额,降低品牌形象。如果做好短信接口防护,一旦被攻击,将面临的是众多不必要的损失。

三.有哪些常见的防护手段?

介绍防护手段前我们需要了解下常见的刷短信验证的行为。

1.以攻击手机号为目的刷短信验证码,这类攻击目标主要是攻击者借助web网站短信接口对目标手机号进行短信轰炸。攻击者会先收集互联网上多个未经防护的网站短信接口,设定要攻击的手机号码通过模拟用户,循环向后台发送短信验证码请求,达到攻击手机号的目的。对于这类攻击一般不会再同一网站平凡发送,通过一般防护手段即可达到防护目的。

2.以恶意刷取目标网站短信费用为目的的攻击,这类攻击主要目的是刷掉目标网站的短信费用,在第一种基础上攻击者会不停变换各种接口参数如手机号、IP(采用高匿代理)等去请求后台发送短信验证码,进行恶意刷短信,后台根本无力辨别用户真伪。攻击目标明确,难以防护,因其变换不同IP、手机号,一些简单措施基本失效,产品设计人员在前期产品设计时尤其需要注意这类攻击。

下面是针对攻击者做出的一些常见的应对措施。

1.增加前端验证码,在获取短信验证码前增加图文验证码是较为常用的方法。攻击者一般是采用自动化攻击,增加图文验证码后,攻击者要对验证进行识别验证成功后才能进行模拟用户发送请求。

2.对单个手机号请求限制,对单个手机号进行单日接收次数的限制,可以防止单个手机号无限制刷短信,同时设置时间间隔可以有效,防止人工刷票。短信接收次数可以根据平台特点进行限制,一般日接受验证码次数为10次左右;同一号码发送时间间隔通常为60秒,前后端必须保持一致。

3.对单个IP请求限制 对单IP最大发送量进行限制,可以有效防止单一IP下多手机号被刷的问题。最大发送量限制是防止恶意攻击者同IP下不同手机号进行刷短信验证码行为。根据平台实际情况设计一个短信最大发送量的阀值,超过阀值将不予返回短信。

4.对手机号码真实性限制,检测输入手机号码的有效性,屏蔽无效和非法的手机号码。

5.对传出参数进行加密限制,通过对传向服务器各项参数进行加密,到了服务器再进行解密,同时用token作为唯一性识别验证,后台写一个算法将token注入到前端,然后前端可以通过相应的规则获取到token,在发送短信验证请求接口数据时带上token,在后端对token进行验证,验证通过才能正常将短信发送。

这个时候有人就说了,发个短信验证么还要搞这么多事情,烦死了。有人问,博主除了这些还有没有更好的办法来解决这个问题呢?有没有不需要我写那么多代码就能防护好短信不被盗刷的?答案当然是有了。可以加一个腾讯的短信验证看看,腾讯验证码是一种基于图形识别或人机交互等技术手段的验证码安全认证系统,旨在确保用户的信息安全和账号安全。它通过手机短信、图片、语音、滑动验证等不同形式的验证方式,对用户进行身份和行为的确认。这种验证方式可以有效地避免自动化恶意攻击、垃圾邮件、僵尸网络和社工欺骗等安全问题,保护用户隐私和安全,提高整个平台的安全性。因此,腾讯验证码已被广泛应用于各种互联网应用场景,如网站、APP、数字化营销等领域,并不断更新和完善,以应对不断升级的安全威胁和风险。

 

你可能感兴趣的:(web,app,运维,腾讯云,http,网络安全)