
前端有一个调用发送验证码的网页,估计被哪个别人有心的人恶意调用了,现在数据库不断在 insert 数据验证码的记录,有一个手机号多达 800 多次。目前已经限制每个手机号 5 分钟内只能发 5 条,但是对方换了策略,发了 N 多个手机号,天啊!求对策!
场景是这样的:有一个注册页面,需要输入手机号,然后会有个获取验证码,验证码正确才能注册。
恶意攻击的人找到了发送验证码这个地址,如: send_msg.php ,然后恶意调用了 N 次, CSRF 应该不是针对这个问题的。
解决办法想到 2 种:
1 yinxingren 2016 年 2 月 19 日 via iPhone 验证码~ |
2 lshero 2016 年 2 月 19 日 加图验 |
3 htfy96 2016 年 2 月 19 日 限制每个 ip 5 分钟只能发 5 条, 30 分钟只能发 10 条, 2 小时内只能发 15 条? |
4 wclebb 2016 年 2 月 19 日 这是用来「呼死你」短信,为达到让对方手机无法正常使用通信的目的。 |
5 wclebb 2016 年 2 月 19 日 你不说你网站是干嘛的。。。 |
6 feiyuanqiu 2016 年 2 月 19 日 把验证码放 redis 或缓存里? |
7 bjrjk 2016 年 2 月 19 日 via Android 你限制每个 IP 每分钟只能发 1 条,不管是那个手机号都只能一条不就完了 |
8 daniellu 2016 年 2 月 19 日 CSRF 验证? |
9 lijinma 2016 年 2 月 19 日 我也遇到过,几个方法: 1. 最通用的方法,就是在前端加 验证码来限制。 2. 限制 ip ,使用 fail2ban 来监控 nginx 日志,然后限制 ip 建议你使用方法 1 ,不要图简单。 |
10 500miles 2016 年 2 月 19 日 验证码被识别了? 还是压根儿没有图形验证码? |
11 jarlyyn 2016 年 2 月 19 日 加验证 401 页面加 cookie,nginx 判断 cookie 反代,定时修改。 动态 js 生成验证码,类似 crsf 。 之前客户遇到过,我能想到的办法就这些。 |
12 jarlyyn 2016 年 2 月 19 日 另外不要考虑限制 ip 和手机号码。 带不带重复的。 我怀疑是坐在应用程序里的,而非网站。 |
13 firefox12 2016 年 2 月 19 日 图形校验码啊 |
14 skiplow 2016 年 2 月 19 日 接口加个校验值呀! |
15 br00k 2016 年 2 月 19 日 放数据库作死么。。。上 redis ,加点限制就行了。随便玩。 |
16 meijing0114 2016 年 2 月 19 日 首先校验请求有效性吧,相同的验证码可以重复提交? 其次对 ip 限频,防止被恶意调用。 再次这种数据不适合放在数据库吧,如果只是要统计一下的话。 |
17 shiny PRO 好多人好像没 get 到点,发短信验证码是要钱的。 |
18 mailunion 2016 年 2 月 19 日 你把短信验证这一步取消了不就行了! 你把短信验证这一步取消了不就行了! 你把短信验证这一步取消了不就行了! 你把短信验证这一步取消了不就行了! 你把短信验证这一步取消了不就行了! 你把短信验证这一步取消了不就行了! 你把短信验证这一步取消了不就行了! 你把短信验证这一步取消了不就行了! 你把短信验证这一步取消了不就行了! 你把短信验证这一步取消了不就行了! |
19 phpcxy 2016 年 2 月 19 日 我用云片,他那边已经限制了 30 分钟同一个手机号只能发两条 |
20 TangMonk 2016 年 2 月 19 日 我也遇到过,加了 csrf token 就没事了,如果还不行那就加入图形验证码 |
21 homfen 2016 年 2 月 19 日 via iPhone 加个验证码呀,输入验证码才会发送短信,估计被利用做短信轰炸了 |
22 RangerWolf 2016 年 2 月 19 日 目前我感觉你能做的有两个事情: 1. IP 限制 2. 修改 php 的名字~ 然后调用的代码相应的也修改 |
23 coosir 2016 年 2 月 19 日 我们遇到的是各种不同的 IP 和不同的手机号,防不胜防 有效的办法就是加图形验证码 |
24 istark 2016 年 2 月 19 日 短信轰炸机用了你们短信验证码,以前我看到有人先邮箱验证,收到邮件在短信验证,再限制一些其他的,这个虽然繁琐了,效果会好点。 |
25 realpg PRO 不带验证码就能发短信,你们这系统设计的人是 out of date 多久了…… |
26 killerv 2016 年 2 月 19 日 加验证码是最合适的方法吧,个人觉得限制 ip 有可能会误杀。 |
27 tonghuashuai 2016 年 2 月 19 日 图片验证码+频率验证策略基本可以解决这个问题 |
28 zxgngl 2016 年 2 月 19 日 说句题外话,我觉得现在随便注册什么帐号就要验证并绑定手机号本身就是一个 bug 。 |
30 aprikyblue 2016 年 2 月 19 日 先图形验证码过了才让发短信验证 |
31 Raidal 2016 年 2 月 19 日 先加图形验证码才允许发短信,这个策略很多短信服务商都有相关的安全提醒 |
32 Light3 2016 年 2 月 19 日 - - 你的短信商 没有 一个小时就让发 3 个的限制吗 |
33 Srar 2016 年 2 月 19 日 geetest |
34 pyshift 2016 年 2 月 19 日 我很好奇,运营商居然没有屏蔽你。不知道用得哪家的服务,一般都会直接屏蔽拉黑你才对啊。图验和 IP 监控其实只是增加难度而已,图验一般立竿见影, IP 地址搞个代理你就傻眼了。 |
35 wd0g 2016 年 2 月 19 日 一般每个手机号,每天设置 3 次验证码就 OK 了 |
36 cmxz 2016 年 2 月 19 日 图片验证码 |
37 sding 2016 年 2 月 19 日 via Android 设计系统时没考虑到这种情况???加图验 |
38 KevinChan 2016 年 2 月 19 日 via iPhone 那就用邮箱注册呗,手机验证码注册的除非必须,否则就不注册 |
39 flyingnn 2016 年 2 月 19 日 via Android 京东,百度的注册是没有图片验证码的,是钱嗯,还是防御技术? |
40 lutla 2016 年 2 月 19 日 一看就是被 0gtx 那批人给利用了 233 |
41 salmon5 2016 年 2 月 19 日 加验证码, 手机注册就手机注册呗,有些程序猿真是清高,有些场景就是需要手机验证码这种相对物理的安全验证方式。你破解我手机验证码试试?邮箱撞库安全系数没手机高。 |
42 nightv2 2016 年 2 月 19 日 via Android 同样好奇短信提供商没有屏蔽你么? |
43 jyu213 2016 年 2 月 19 日 好好奇,为啥没有人提 360 的双向验证。。。 |
44 tianice 2016 年 2 月 19 日 后台加上验证规则,像你之前的规则,超过规则后后台不发送验证码,前台还是提示发送成功,他摸不透你的规则就老实了,前台无论如何都要提示发送成功 |
45 libook 2016 年 2 月 19 日 1 阶段:验证码 2 阶段:记录放在 Redis 缓存里 3 阶段:缓存用 IP 做 Key 4 阶段:反思一下自己得罪谁了 通常 1 阶段就够了。 |
46 gkiwi 2016 年 2 月 19 日 难道只有我考虑的是,要浪费我好多钱么。。。 |
47 publicAdmin 2016 年 2 月 19 日 建议: 1.如果有安全厂商的联系渠道,建议通过其获取一份手机号码黑名单过滤文件 (至于他们的数据来源,未知。猜测是通过某些策略判断为机器人操作后添加的) 2.如果需要保持足够高的安全性,且用户普遍质量偏高,建议尝试语音验证码 3.server 添加短信策略 4.安利个传说的新型验证方式.`极验` 弊端: 会误杀部分,但对刷验证码应该有一定缓解。短信商没封你的接口也算是可以了。 |
49 leilux 2016 年 2 月 19 日 如果是直接调用 send_msg.php 的加 csrf 可以解决 如果是靠刷注册页面来发短信的可以加图形验证码 总之 send_msg.php 这个需要有个类似 token 的参数来增加调用的代价 |
50 tairan2006 2016 年 2 月 20 日 via iPad 加图形验证码,语音验证码,或者干脆让用户给你发短信。。 体验依次下降 |
51 bkmi 2016 年 2 月 20 日 超过几次之后 图像验证码啊 这种强度,就算不是刷验证码 普通页面都应该封 ip 了吧 |
52 incompatible 2016 年 2 月 20 日 @br00k 楼主的问题并不在于用数据库还是 redis 。以及这点数据量用数据库怎么就作死了? |
53 pynix 2016 年 2 月 20 日 笑尿 |
54 MrMario 2016 年 2 月 20 日 可以试试阿里的滑动验证,就用户体验来说,还是可以的 |
55 wbsdty331 2016 年 2 月 20 日 让用户给你发短信 怎么样 |
56 xlrtx 2016 年 2 月 20 日 sms 服务应该会有每天上限的, 我做过的一个是每天同一个手机 5 条, 再加上 captcha 和 ip 限制, 就不会有问题的 |
57 tSQghkfhTtQt9mtd 2016 年 2 月 20 日 当然你用户如果不是都会翻墙那当我没说 |
58 mrwangrj 2016 年 2 月 20 日 |
59 h4rdy 2016 年 2 月 20 日 给 send_msg.php 传输 post 数据。 number=1388888888&token=xxxxxx 使用 token |
60 jlj224 2016 年 11 月 30 日 我们用的 SUBMAIL 是有每日次数限制的。而且他们有个主动防御机制,但是有部分会被误杀 http://submail.cn/ |