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