"短信轰炸机",是别人通过爬虫或者其他抓取手段在网路上收集那些公司平台短信业务接口的一个集成程序,可能只需要输入一个手机号,对方一整天都会收到各大平台的注册或提醒短信,就是手机在那里响个不停。因为现在手机只能对单方的多条短信进行屏蔽,而这种是多平台同时进行发送,很难拦截。
而被他们收集接口的乙方公司,可能一天短信的消耗量就比过一周的量,造成公司财产损失。其实相比以前我们遇到的被刷“提现”接口可以直接获取金钱,刷短信接口的行为,开始我很是想不通,就单纯为了消耗别人公司的短信费,他也得不到什么好处,为什么要这样做。当时也没想对方是出于什么理由,只是先把短信接口重新整改,防止的手法在下面介绍。
这种行为我也是最近才了解,原来网上也存在像周星驰电影"整蛊专家"的人,收取别人的钱开展对自己客户提供的人进行骚扰等业务,而短信就是其中一种,网上还有通过输入手机号,对方手机一天全部是陌生人来电的“呼死你”软件,心理承受力差的可能就抑郁,好点的话至少一天的心情都不好。
我们公司现在短信的用处主要还是注册/登陆验证码,找回密码,绑银行卡,修改支付密码,所以一天的量并不大。但那一天充了钱,不出几分钟,直接刷到没有,还好发现的早,解决的也早。
解决方法,在PC端可以在发短信验证码时,加上图形验证码校验,最好是要能和用户互动的,比如拖动或算术的,因为如果是静态的图形验证也不是很安全,毕竟现在的图片识别接口也很多。而在移动端,加图形验证体验不是很好,可以和前端通过约定密钥实现,而在H5上,就很尴尬了,而且还遇到一个只有必须绕弯路的事情。
一,APP端
1.IP和手机号黑名单(ip的例子)
<?php
$Ip = $request->ip();
$Iplist = ['180.137.97.10'];
if (in_array($Ip, $Iplist)) {
return $this->sendError(1, '业务限流', 200);
}
2.限制指定的user_agent
<?php
$string = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0";
if ($Agent == $string) {
return $this->sendError(1, '业务限流', 200);
}