网站的短信验证码被恶意刷,请网络安全方面的前辈,指教一下,有什么办法能反击? 攻击者的 ip 是动态的,估计是做了什么代理,手机号也是变动的 现在能做的就是限制访问频率 http 头部信息模拟的是 IE 浏览器,无法通过限制特定的头部信息来丢掉请求
1
lianyue 2016-10-19 20:15:06 +08:00
简单的 增加个 token
一劳永逸的 增加个图片验证码 然后图片验证码对了才能。。。发送短信验证码 |
2
UnitTest 2016-10-19 22:08:58 +08:00
我也遇到过这个问题, ip 动态很麻烦, token 麻烦,图片验证码最简单,但是体验不好。
我把 ip 和手机存到 redis ,一个 ip 或者手机号发送 3 条短信之后就要验证码。 |
3
crab 2016-10-19 22:26:57 +08:00
同 1 楼,上验证码。至于手机号码不同,有可能短信接口被人调用写群发攻击器了。
|
4
yankebupt 2016-10-19 22:34:39 +08:00 via Android
最简单的就是不用短信验证码。短信验证被刷很有可能是对方反感实名认证,或者手机号泄露过被骚扰烦了找个网站撒气,并不一定是特定针对你的网站,很可能只是看到没有大网站的法律背景同时又好欺负罢了。
p.s.关于验证码有打码云什么的其实都是小事,你肯定还记得微信刷阅读量的那个吧,那可是每个都是真真正正手机的,都能真的验证码甚至装 app 都不在话下,你可以略微参考一下微信最后怎么处理的,虽然可比性不高 |
5
UnitTest 2016-10-19 23:09:54 +08:00
@yankebupt 你想的简单了。有一帮人就是找各个网站的短信接口,然后打包做成一个短信轰炸机卖钱。
人工破解验证码来刷短信成本高,没啥收益,一条短信也就几分钱,公司也无所谓, 之前有漏洞,被人用程序一晚上刷了我二十多万条短信。就是短信轰炸机这种东西干的, ip 肯定是分布的,因为买软件的人天南海北,什么手机号都有,唯一特征就是比较密集。所以我用缓存限制了以后就没人大量刷了,小规模的我也看不出来,都混杂在正常的短信里了。 |
6
wd 2016-10-20 00:04:54 +08:00 via iPhone
学 12306 反过来 让用户给你发短信先
|
7
lslqtz 2016-10-20 01:51:13 +08:00
反击的话,你可以尝试给他在接口中返回一个超大的内容,几十 M 或者几 G 这样子,他的客户端估计很快就爆掉了
|
8
macroideal 2016-10-20 07:26:28 +08:00 via iPhone
@lslqtz 反回大内容反而增加了服务器的负担
|
9
jackyspy 2016-10-20 08:07:29 +08:00
提高验证码获取门槛,比如使用难度较高的验证码,杜绝机器识别。
限制同一个 IP 和同一手机号访问频次。 为了保护服务器,可以考虑根据平时的访问量来限制整站短信接口调用频次,副作用就是可能影响正常用户。 |
10
lslqtz 2016-10-20 08:22:58 +08:00 via iPhone
@macroideal 哈哈 不差钱就用
|
11
Phant0m 2016-10-20 08:27:31 +08:00 via iPhone
谁让你用手机号注册,邮箱不好么?现在的网站,动不动就要手机注册
|
12
Cannikin 2016-10-20 08:41:30 +08:00 via Android
不知你是否知道“短信轰炸机”,现在的情况也是有可能被恶意利用了。收集网上需要短信验证的网站,然后只需要填入手机号,该手机号使用者就要抓狂了。
|
13
timothyye 2016-10-20 09:01:02 +08:00 via Android
加图片验证码
|
14
Infernalzero 2016-10-20 09:10:52 +08:00
最有效的方法就是加图片验证码增加对方难度
如果对方伪装得比较差的话其实通过判断各种 header 信息在 nginx 处拦截即可,记得匹配到了直接返回 200 |
15
tomczhen 2016-10-20 09:33:31 +08:00
1. 检查代码逻辑,看看是不是有什么漏洞——反正我公司的项目就遇到过一次。
2. 增加滑动验证码,貌似有个极验是做这个,其他家就不清楚了。 3. Web API 的话,增加签名校验,防止伪造请求。另外,还得考虑重放攻击的处理。 4. 后台判断出是攻击者的话,别直接报错、屏蔽之类的,而是返回假数据,但是不实际处理业务。(比如返回正常状态信息,但是实际不发短信。) |
16
PEP4JASON 2016-10-20 09:43:02 +08:00
网站短信接口暴露? 还是脚本操作
|
17
gamexg 2016-10-20 09:55:25 +08:00
@macroideal 给他重定向到 ms iso 。
|
18
hayao650 OP |
19
PEP4JASON 2016-10-20 15:31:27 +08:00
隐藏参数或加密参数
|
20
PEP4JASON 2016-10-20 15:34:30 +08:00
然后对同一号码请求多次 验证码 的场景做一下处理
|
21
jswh 2016-10-20 16:06:05 +08:00
反过来发短信
|
22
046569 2016-10-20 16:21:44 +08:00
经常遇到这种问题,大致思路楼上都说过了.
除了验证码以外,我更趋向于在前端增加 WAF ,简单有效.能识别出绝大部分攻击者. 关键在于认真分析日志,搞清楚对方的攻击手段和特点.比如对方总共使用多少代理?平均每个代理请求几次?对方攻击的时间段趋向于白天还是夜晚?如果这些问题你都了然于胸,上 WAF 吧. |
23
lianxiaoyi 2016-10-20 16:29:04 +08:00
最简单的。。。。。别做限制 。。。。。当你监测到某个 ip 发送 10 条信息之后。。。。你还是返回正常 但是不发送短信了。。。。造成一种视觉错误。。。。
|
24
zpfhbyx 2016-10-20 18:00:47 +08:00
@lianxiaoyi 。。我之前也是这么干的- -。
|
25
hayao650 OP @lianxiaoyi 他的 ip 数量太多了,我观察了两天,第一天有 200 多,第二天将近 400 ,一直在更新
|
27
lslqtz 2016-10-21 01:03:55 +08:00
对短信接口加 Token UA 验证
|
29
lslqtz 2016-10-21 10:13:40 +08:00 via iPhone
@hayao650 在需要用的页面给用户生成 token 加进去(用 IP 、时间等防止多 IP 刷)之类的。。非得说防刷,也可以判断 IP 的来源地区之类的,网上有几个我记得可以查是不是代理。
|
30
lianxiaoyi 2016-10-21 12:05:29 +08:00
@zpfhbyx 这种办法其实很好。。。。。我就遇到过一个 sb 在那提交了一个多小时。。。。。
|
31
ssyz1988 2017-07-06 18:13:41 +08:00
@lianxiaoyi 但是楼主碰到的并不是一个固定的 ip
|