【问题标题】:Show captcha after three wrong attempts by the user用户尝试三次错误后显示验证码
【发布时间】:2011-07-31 09:53:36
【问题描述】:

我正在开发一个应用程序,如果 N 次尝试失败,我需要在某些地方引入验证码。这些地方可以是注册、登录、添加到愿望清单、订阅等。这也是为了确保任何人都不会尝试拒绝服务攻击和暴力攻击。 Spring Security 中是否有这种机制?

【问题讨论】:

    标签: java spring jakarta-ee spring-security


    【解决方案1】:

    Spring Security 中没有直接的内容,但应该很容易将登录计数存储在用户会话中,并检查 JSP 中的计数以呈现验证码是必要的。

    【讨论】:

    • 使用会话来计算尝试次数可能效果不佳,因为 cookie 很容易被删除,这意味着创建了一个新会话。相反,您可能需要考虑记录每个 IP 地址的尝试。
    • 这(至少对于 NATting 防火墙后的企业用户而言)可能很容易导致更多问题。 :-)
    • 我认为两者的结合很好。您可以对会话进行 3 次尝试,对 ips 进行 6 次以上的尝试。无论用户信息如何,您也可以为特定帐户制作验证码。
    • 我不明白这是如何被接受和最赞成的答案。验证码的重点是防止脚本暴力攻击,机器人要做的第一件事就是不随请求发送 cookie。在大多数情况下,这甚至可能是默认行为。
    【解决方案2】:

    实现一个 AuthenticationFailureHandler 更新数据库中的计数/时间。您不能指望使用会话,因为攻击者无论如何都不会发送 cookie。

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 这是一个不错的博客,但是我无法理解如何在 N 次后才显示验证码
      • @user504459,您可以轻松地维护一个状态,使用会话或 cookie 或查询字符串等使用整数,在每次无效尝试时递增它,如果超过阈值,使用 RedirectView 显示验证码,如何听起来不错?
      • youps..谢谢它的工作......使用这种技术一切都很好。
      • @Narayan 如果机器人在第 n 次登录尝试中选择不发送此 cookie 会怎样
      • @MuhammadHewedy:在这种情况下 - 在每次访问尝试时存储用户 IP,并根据 IP 地址识别用户
      【解决方案4】:

      如果您将 reCAPTCHA 与 Spring Security 一起使用,这很有帮助 http://krams915.blogspot.com/2011/02/spring-security-3-integrating-recaptcha.html

      【讨论】:

        猜你喜欢
        • 2015-02-23
        • 2015-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-26
        • 2023-04-06
        • 1970-01-01
        • 2022-12-24
        相关资源
        最近更新 更多