1
yksoft1ex 2019-01-09 16:49:47 +08:00
用户表里面加一个异常状态,错误登陆次数过多过频直接禁止登录,要求用户修改密码。
|
2
yksoft1ex 2019-01-09 16:53:53 +08:00
或者搞个 geoip 数据库,短时间 IP 的地理位置反复更改,按异常登录处理。
|
3
CallMeReznov 2019-01-09 16:57:58 +08:00
运维方面先用 nginx 之类的过滤功能按照规则过滤一部分,可以减少一部分不必要的后端压力
后端按照常规密码错误次数等方式屏蔽禁用账户,让客户修改密码 |
4
fox0001 OP @yksoft1ex #1 这个撞库是一个 IP 尝试多个 email 登录。估计对方有一堆账号密码,逐个来试。所以不能记录用户帐号的异常状态
|
5
fox0001 OP @CallMeReznov #3 这个撞库不是穷举,应该是拿着一大堆 email 和密码逐个试。要禁的话,只能禁止某 IP 一段时间不能登录
|
7
fy 2019-01-09 17:18:17 +08:00
惩罚冷却怎么样,同一 IP,第一次错误 5s,30s 内第二次错误 10s,然后五六次以后增加到 30s,10 次 1min,15 次 30min,30 次 12h 以此类推
|
9
crab 2019-01-09 17:30:57 +08:00
@hlwjia 这种除了麻烦客户再去经过电话客服解除还能什么作用?如果只是密码正确就能登陆为了资金安全能理解,问题是登陆过程还需要电子设备的保安编码,总不可能撞出密码还连这个两步验证的 6 位数字都撞出啊。
|
10
xkeyideal 2019-01-09 17:35:07 +08:00
本质上是个反爬虫
|
11
CallMeReznov 2019-01-09 18:16:20 +08:00
|
12
mars0prince 2019-01-09 18:20:04 +08:00
参考微信和邮箱,换 IP 登录就要发手机验证码?
|
13
fox0001 OP @mars0prince #12 网站没要求用户录入手机号…
|
14
woyao 2019-01-09 18:24:24 +08:00
IP 信誉了解一下 :)
|
15
tanranran 2019-01-09 18:39:46 +08:00
加验证码,加 IP 拦截
|
16
d5 2019-01-09 19:14:41 +08:00
加一层安全宝或者 CloudFlare,或者改验证码成极验、Luosimao 之类的
|
17
d5 2019-01-09 19:18:35 +08:00 1
老接口切换成蜜罐,收集泄露的用户信息;
新增一个登陆接口,用户页面改动到新接口; 加一层 CloudFlare 或者安全宝; 换验证码到极验、Luosimao。 (事实上你随便改动一下登陆接口的路径位置、阴险地在字段加一个空格,就能让他冷却好一会儿,因为他的脚本就失效了。而空格让粗心的人防不胜防。) |
19
dapang1221 2019-01-09 19:27:50 +08:00
异常流量识别是个问题,如果对方是撞库的话,肯定会出现好多未注册用户尝试登陆的情况,这是一个点,可以从这标记异常的 ip。前端可以加浏览器指纹,例如分辨率什么的,对方不是会模拟访问别的页面吗,在别的页面把数据传上来,把指纹和 ip 对应上( github 上有个 fingerprint2.js 不错),如果一个指纹或 ip 多次尝试未注册用户的登录,那所有这个请求的登录成功请求,再强行验证或绑定一下手机号,这样也不会错杀
|
20
hilbertz 2019-01-09 19:32:37 +08:00
recaptcha
|
21
hanxiV2EX 2019-01-09 20:00:05 +08:00 via Android
异常流量监控,对频繁登录的做二次登录验证就好了,发邮件或者短信。
|
22
hanxiV2EX 2019-01-09 20:03:06 +08:00 via Android
一个 ip 一天登录了两次以上就走二次验证也是可行的,正常客户端都会缓存 token 的,对正常用户没啥影响。
|
23
fox0001 OP @d5 #17 就是使用 Web 登录界面撞库的,不是调用登录 api。就是想问问除了增强验证码(什么极验、recaptcha 之类),还有什么好方法
|
24
loading 2019-01-09 20:08:01 +08:00 via Android
一次输错就出验证码。
|
25
fox0001 OP @dapang1221 #19 不是模拟别的页面,是模拟人类访问网站。可以理解为对方就是个浏览器,但它是机器在操作。目前也只有根据访问情况,记录异常 IP 了。但如果对方的 IP 是通过类似拨号获得 IP 的话,容易误伤正常客户。网站没有记录客户手机号,强验证也只有发送 email 了
|
26
fox0001 OP @loading #24 目测对方破解了验证码,就是能够识别验证码图片上的文字。所以问,除了加强验证码,还能如何防止撞库
|
28
loading 2019-01-09 20:19:24 +08:00 via Android
如果是有价值网站,除了用高强度验证码。可能还有就是短信登录或者微信扫码这种了。
毕竟对面有 ip 池了。什么浏览器指纹这些,针对性写代码也能过的。 |
29
loading 2019-01-09 20:20:53 +08:00 via Android
一般撞库一个账户只会登录一次,针对用户名是没用了,你只能限制 ip,然后你对面有一堆 ip。
|
30
Humorce 2019-01-09 20:27:18 +08:00 via iPhone 1
虽然确实是技术性的讨论,大家无偿提供给你的建议你都不认同或者觉得不够好,那么你应当让公司花钱找更专业的人士去解决,而不是领一份工资死干。如果你就是花钱请回来解决问题的,那么回到第一个逗号后面重新看一次。
试都没试过就以 据说 /可能 之类这样的字眼去回,这样不好,当然我这样回复也不好。 |
31
hilbertz 2019-01-09 20:28:16 +08:00
@fox0001 recaptcha v3 还没破解,即使像 v2 那样的破解,也不太可能用于大规模撞库,接入 recaptcha 就相当于 google 帮你监控用户登录行为,你不太可能找到比这个更有效的防护手段
|
32
tabris17 2019-01-09 20:30:05 +08:00
两步验证
|
33
tabris17 2019-01-09 20:31:18 +08:00
首先需要白名单,也就是用户常用的 IP 地理位置和登陆设备信息(包括浏览器指纹),如果地理位置异常或设备异常,就升级成两步验证
|
34
alvin666 2019-01-09 20:32:22 +08:00 via Android
验证码呗,我见过最 bt 的码是 discuz 生成的,gif+随机中文字符(大小颜色形状不定还有干扰线)其他帧是随机数字和英文...
用户用起来想骂娘,但是至少挡住了 |
37
fox0001 OP @Humorce #30 在 V2 发帖前,跟同事讨论过了,也 Google 过相关的解决方案,也不尽满意。觉得做 Web 的,都会遇到这个问题,或者忽略了这个问题,大家讨论一下而已。那些天天问这问那的帖,是不是也要让他们去付费找答案?如果真需要达到一定程度的安全级别,登录就不是输个账户密码这么简单了。
对于一份工资死干的问题,我觉得,感兴趣的事情,就算是交给第三方去处理,为什么就不能自己去想想? 另外,这几天刚好看到 reCAPTCHA 被破解的新闻,但是没细看,所以用“据说”。个人觉得没毛病。 |
38
0ZXYDDu796nVCFxq 2019-01-09 22:36:37 +08:00 via Android
错 5 次封一个小时 IP,错 10 次封 24 小时,连续三天被封就永久封
|
39
hanxiV2EX 2019-01-10 00:14:01 +08:00 via Android
二次验证只在异常情况下出现就得了,正常情况可能就第一次出现,后面就记住密码,采用 token,相当于首次换设备登录需要激活。qq 和微信都这样干的。对业务人员影响并不大吧。
|
40
vsitebon 2019-01-10 02:29:53 +08:00 via iPhone
使用 reCaptcha 的话,可以先观望一下这个库: https://github.com/ecthros/uncaptcha2
|
42
BBge 2019-01-10 03:15:44 +08:00 via Android
简单的 直接换腾讯的语义验证码 暂时我没了解到有打码网站能接这个活
|
43
KasuganoSoras 2019-01-10 03:22:17 +08:00
膜一下……我之前写了个登录网页,单 IP 密码错误一次就要等 10 秒后才能再试一次,再错一次再+1s ……有一次我看到数据库里有个人错了 100 多次,+100s
|
45
NicholasYX 2019-01-10 08:14:58 +08:00 via iPhone
加手机验证码?
|
46
dengtongcai 2019-01-10 08:28:44 +08:00 via iPhone
验证码比较直接…
|
47
KgM4gLtF0shViDH3 2019-01-10 08:50:52 +08:00 via iPhone
@fox0001 #13 没有手机号用邮箱验证吗呀
|
49
iBaoger 2019-01-10 09:08:00 +08:00 via Android
购买一个攻击 IP 标识库,先干掉一波,剩下的自己寻找标识
|
50
Light3 2019-01-10 09:13:10 +08:00
兄弟 你先整个 难点的验证码 验证码不过 不给登陆
压力就慢慢小了 说实话 现在 ip 换一个 太容易了.. 之前被搞 一小时 换了 5 600 个 ip.. |
51
KgM4gLtF0shViDH3 2019-01-10 09:14:48 +08:00
@yksoft1ex #46 要是有邮箱密码的话都能充值密码了吧,还要撞库?
|
52
jacketma 2019-01-10 10:13:01 +08:00 via Android
双向多重防护,没有必杀技,就是攻防。用户端每个 IP 试错次数,可试次数,频率,验证码都要上,服务端对每个账号也做访问次数做限制,每个账号一天内试错三次就禁止登录,第二天解锁或者重置密码可登录。
整体措施就是在正常用户体验和攻击难度之间取平衡点,没有一劳永逸的秘诀。 |
53
yzkcy 2019-01-10 10:28:04 +08:00 6
做安全的来说两句。
首先,楼上评论里的"错误登陆次数过多过频直接禁止登录,或者 ban IP"都是扯淡。除了误伤正常用户,用处不大。 真这么做了,竞争对手要笑哭了,整天撞你。 防撞库现在主流还是验证码,既然你都知道你们验证码非常简单,那就上个难的呗。 至于 "但是再复杂的验证码也能破解",这就是废话。 攻击是要成本的,如果成本大于收益的话,谁还搞你? 建议就是 1.上个 NB 的验证码(业内很多解决方案) 2.监测环境,二次验证 3.收集风险账户信息,强制改密等(一些被脱过库的大站一般都这么做) 4. ...... |
55
locoz 2019-01-10 10:48:35 +08:00
图片验证码过于简单了,首先这个必须升级一下。
然后就是可以用 rtbasia 这种识别 IP 真人概率的,一般 IP 量很大的那种情况,低质量 IP 占大部分,也就是真人概率比较低的那些,可以直接弹二次验证。 还有登陆 IP 跟注册、常用 IP 不在同一个地域的也直接弹二次验证。 |
56
jinhan13789991 2019-01-10 11:40:50 +08:00
放弃密码登录,强制每次登录都输入短信验证码。
问题解决 |
58
l00t 2019-01-10 14:56:36 +08:00
要是我就让它撞呗。你用户的密码被人撞出来了,你自己密码没设好咯,关我什么事。要安全?我给你加个人脸识别,你愿意先存个脸在这里吗?
|
59
arthasgxy 2019-01-10 16:00:41 +08:00
怎么防,我是不知道。。。
但怎么攻,我还真知道一点。。。 处于好奇干过一点小坏事。。。 so,其实个人感觉上面提到的最靠谱的就是加强验证码,提高攻击的难度了。。。 当然如果对方真要想搞你,额,不知道谷歌的那种验证方案有人破掉没有。但总归,多数验证破起来难度真不大,就算搞不定,无非整个打马接口花点小钱也搞定了。 个人推荐与其从这个角度去想,不如直接群发个邮件消息:年底盗号多发期,建议大家妥善保管密码,如有与其他网站密码相同、相似的,建议更改密码,巴拉巴拉 |
60
arthasgxy 2019-01-10 16:05:51 +08:00
哦哦,对,
如果检测到用户不是在经常登录的 ip 登录,就要用户验证下手机 or 邮箱。 然后验证没通过的话,就给对应手机 邮箱发个消息:有人在 xx ip 尝试登录, 但验证没通过,如果不是你自己干的,说明密码泄露了,赶紧改密码 |
61
xencdn 2019-01-10 16:27:47 +08:00
|
63
edward8628 2020-05-19 11:34:46 +08:00
网络安全当然是层层防护啊,增加撞库成本。api 签名,蜜罐,异地登陆或不同设备登陆开启 2fa,手机或者邮箱收取验证码。其实还是收 6 位验证码最有效,但是用了验证码,被用户骂死了,被客服骂死了。
|