验证码被恶意狂刷,有什么办法反击,求指教

2016-10-19 20:11:02 +08:00
 hayao650

网站的短信验证码被恶意刷,请网络安全方面的前辈,指教一下,有什么办法能反击? 攻击者的 ip 是动态的,估计是做了什么代理,手机号也是变动的 现在能做的就是限制访问频率 http 头部信息模拟的是 IE 浏览器,无法通过限制特定的头部信息来丢掉请求

9910 次点击
所在节点    问与答
31 条回复
lianyue
2016-10-19 20:15:06 +08:00
简单的 增加个 token
一劳永逸的 增加个图片验证码 然后图片验证码对了才能。。。发送短信验证码
UnitTest
2016-10-19 22:08:58 +08:00
我也遇到过这个问题, ip 动态很麻烦, token 麻烦,图片验证码最简单,但是体验不好。
我把 ip 和手机存到 redis ,一个 ip 或者手机号发送 3 条短信之后就要验证码。
crab
2016-10-19 22:26:57 +08:00
同 1 楼,上验证码。至于手机号码不同,有可能短信接口被人调用写群发攻击器了。
yankebupt
2016-10-19 22:34:39 +08:00
最简单的就是不用短信验证码。短信验证被刷很有可能是对方反感实名认证,或者手机号泄露过被骚扰烦了找个网站撒气,并不一定是特定针对你的网站,很可能只是看到没有大网站的法律背景同时又好欺负罢了。
p.s.关于验证码有打码云什么的其实都是小事,你肯定还记得微信刷阅读量的那个吧,那可是每个都是真真正正手机的,都能真的验证码甚至装 app 都不在话下,你可以略微参考一下微信最后怎么处理的,虽然可比性不高
UnitTest
2016-10-19 23:09:54 +08:00
@yankebupt 你想的简单了。有一帮人就是找各个网站的短信接口,然后打包做成一个短信轰炸机卖钱。

人工破解验证码来刷短信成本高,没啥收益,一条短信也就几分钱,公司也无所谓,
之前有漏洞,被人用程序一晚上刷了我二十多万条短信。就是短信轰炸机这种东西干的, ip 肯定是分布的,因为买软件的人天南海北,什么手机号都有,唯一特征就是比较密集。所以我用缓存限制了以后就没人大量刷了,小规模的我也看不出来,都混杂在正常的短信里了。
wd
2016-10-20 00:04:54 +08:00
学 12306 反过来 让用户给你发短信先
lslqtz
2016-10-20 01:51:13 +08:00
反击的话,你可以尝试给他在接口中返回一个超大的内容,几十 M 或者几 G 这样子,他的客户端估计很快就爆掉了
macroideal
2016-10-20 07:26:28 +08:00
@lslqtz 反回大内容反而增加了服务器的负担
jackyspy
2016-10-20 08:07:29 +08:00
提高验证码获取门槛,比如使用难度较高的验证码,杜绝机器识别。
限制同一个 IP 和同一手机号访问频次。
为了保护服务器,可以考虑根据平时的访问量来限制整站短信接口调用频次,副作用就是可能影响正常用户。
lslqtz
2016-10-20 08:22:58 +08:00
@macroideal 哈哈 不差钱就用
Phant0m
2016-10-20 08:27:31 +08:00
谁让你用手机号注册,邮箱不好么?现在的网站,动不动就要手机注册
Cannikin
2016-10-20 08:41:30 +08:00
不知你是否知道“短信轰炸机”,现在的情况也是有可能被恶意利用了。收集网上需要短信验证的网站,然后只需要填入手机号,该手机号使用者就要抓狂了。
timothyye
2016-10-20 09:01:02 +08:00
加图片验证码
Infernalzero
2016-10-20 09:10:52 +08:00
最有效的方法就是加图片验证码增加对方难度
如果对方伪装得比较差的话其实通过判断各种 header 信息在 nginx 处拦截即可,记得匹配到了直接返回 200
tomczhen
2016-10-20 09:33:31 +08:00
1. 检查代码逻辑,看看是不是有什么漏洞——反正我公司的项目就遇到过一次。
2. 增加滑动验证码,貌似有个极验是做这个,其他家就不清楚了。
3. Web API 的话,增加签名校验,防止伪造请求。另外,还得考虑重放攻击的处理。
4. 后台判断出是攻击者的话,别直接报错、屏蔽之类的,而是返回假数据,但是不实际处理业务。(比如返回正常状态信息,但是实际不发短信。)
PEP4JASON
2016-10-20 09:43:02 +08:00
网站短信接口暴露? 还是脚本操作
gamexg
2016-10-20 09:55:25 +08:00
@macroideal 给他重定向到 ms iso 。
hayao650
2016-10-20 14:16:39 +08:00
1.获取验证码是在注册环节,现在已经控制 ip 和电话号码了,也加上图形验证码,短信发送频率已经降下来了
2.我也不知道为什么非要用手机号+短信验证码这种东西,感觉对公司业务并没有太多帮助
@PEP4JASON 短信接口在网站上很容易看到, F12 一下,就都看到了,这东西还有办法隐藏么?不懂,求解。
@gamexg 这样做是不是有点儿不太好。。。
@lslqtz 我也想这么做,但是考虑到公司买的可怜的服务器和和短信攻击的频率,就放弃了。。。
PEP4JASON
2016-10-20 15:31:27 +08:00
隐藏参数或加密参数
PEP4JASON
2016-10-20 15:34:30 +08:00
然后对同一号码请求多次 验证码 的场景做一下处理

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/313961

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX