如何防止登录API 被暴力攻击?防刷问题。

in web技术 with 5 comments 访问: 4,132 次

场景描述

目前我遇到了一个问题,我正在做一套用户登录的api,将来这套api是给pc和app上共同使用的,那么问题来了,如何防止api被暴力破解?如果对方只使用一个账号进行密码匹配还好,我可以记录账号的登录次数,超过了一定次数就将该账号冻结,但是问题来了:假如我拿到600W账号+密码,一次遍历输入,很有可能就撞到一个匹配的账户,限制ip也不可靠,因为伪造ip实在太简单,那么该怎么解决这个问题呢?
如果每次都设置验证码,用户体验太差,验证码被机器识别也只是时间问题,不知道大家怎么解决的?

这是我在一个技术群里的疑问,有了好的办法将持续更新:

YDFF)GOJBEY)J0{`T@RPG1E.jpg

我在sf上的问答

如何防止登录API 被暴力破解?-segmentfault

总结

黑帽子流行一句话,世界上没有绝对的安全,我们所做的一切,也都是加大他们的攻击成本而已。

赞赏支持
Responses
  1. @

    删了

    Reply
  2. 你好,请问您的这个评论系统是如何防刷的呢,我也在自己写一个评论系统,不用登录的这种,不过不知道怎么增加防刷,是针对IP限制评论次数,评论几次之后就添加验证码吗?

    Reply
    1. @小蚊子

      这个方案是可行的。不登录就拿不到用户ID,而且针对那些机器人限制ip加验证码就足够了。或者第二个方案,就是在提交评论的时候加个正则判断,正常的都通过,不正常的待审核,到时候人工审核是否通过。

      Reply
  3. ldd

    一、nginx 配置同一ip访问文件的频率;二、通过redis 记录用户ip访问登录接口的频率(频率设置的低一点,比如试错每天限制为3次,每分钟限制1次),超过频率,限制该ip访问。可以计算下,就算更换ip,他的时间成本多大。三、判断来源refer,非本站不让访问。

    Reply
    1. @ldd

      是的,现在是设置了ip访问限制的。第三点不可靠,因为不仅仅是pc,还算上移动端,就不能通过来源ip进行限制。我们所做的一切,也只能加大攻击者的攻击代价,黑帽子眼中,没有绝对的安全。

      Reply