Spring Security如何防御暴力?

时间:2014-10-09 17:39:11

标签: grails spring-security

我在Grails应用程序中使用Spring Security插件进行身份验证和授权。用户可以尝试无数次输入他们的密码。是否有配置设置将对蛮力攻击应用某种防御。例如,10次尝试后,不允许用户登录尝试?

1 个答案:

答案 0 :(得分:2)

简短的回答是Spring Security没有提供任何实施来防止针对帐户的强力企图。

但是,它确实为您提供了实施自己的策略以防范它们的方法。通常,您需要在失败的身份验证事件上实现回调。您在此处所做的工作取决于您的应用的适当行动方案。有些应用程序只会递增失败尝试的会话变量,一旦达到该阈值,就会忽略任何进一步的尝试。

其他应用程序可能需要将此信息与上次失败的尝试一起保留,并通过在一段时间内在特定次数的失败尝试后更新域实例来锁定帐户。

documentation很好地解释了如何执行此操作,但通常您需要将spring安全核心插件的事件侦听器添加到Config.groovy中,如下所示:

grails.plugin.springsecurity.useSecurityEventListener = true
grails.plugin.springsecurity.onInteractiveAuthenticationSuccessEvent = { e, appCtx ->
    // Handle successful login
}
grails.plugin.springsecurity.onAbstractAuthenticationFailureEvent = { e, appCtx ->
    // Handle failed login
    // example of how to obtain the session if you need it
    def request = grails.plugin.springsecurity.web.SecurityRequestHolder.getRequest()
    def session = request.getSession(false)
}