关于短信消耗攻击的认识以及防御

我们都知道门户网站的登录好多都需要验证码,将发送给你的短信验证码,输入到页面才能完成登录或者注册,可是短信是要钱的,都是老板花钱卖的,如何防止恶意的人无休止,请求验证码呢?如果老板短信费一天耗尽他将大为恼怒:我冲的钱一天就没了怎么没见一个人注册成功。当此之时作为项目负责人的你该如何是好?

来先看一个简单的,

当然这是一个假手机号码,然后看一下请求:

崩溃,我不知道这个网站是怎么活到现在的。真是个奇迹,并且js没有压缩。不过还好我试了一下他们用ng对ip单位时间内的请求做了限制。可这对ddos攻击毫无招架之力,完全有被耗尽的风险。

通过上面的例子会对短信耗尽攻击有所了解,怎么防止呢?

这里就是关键要区分是人类发送的请求,还是电脑自动发送的请求,这就引入了验证码,例如:

在发送短信验证码以前,要先填写这种验证码,用来区分是人还是电脑操作。这是大家常见的。

 

第一种解决方案:输入的验证码和你发送的短信验证码相关,就是你获取请求体里面必须带上验证码的内容才能获取到短信验证码:

这样安全吗。实不相瞒,我大学的专业是:“数字图像处理”,曾经做过汽车拍照识别。通过去除噪声点,图像锐化等,是可以自动识别出来的。网上很多这样的工具,所以这样并不是非常安全。

下一种解决方案比上一个好一点:

点击获取短信验证码会有先出现这样的弹框:

然后会产生下面的请求:

这里面会有疑惑信息,不过你可以多试两次分析出疑惑信息,得到答案的,其实做到这里已经不错了。其他的解决方案都是这样的基础上的演化,都能区分是人还是电脑。

 

posted @ 2018-12-27 10:37  node-吉利  阅读(527)  评论(0编辑  收藏  举报