跳到内容

暴力破解保护

编辑此页

暴力破解保护对于双因素认证至关重要,否则攻击者可以轻易猜到认证代码。

登录节流

在 Symfony 5.2 中,"登录节流" 作为 Symfony 安全系统的一项功能被引入。 如果你在防火墙设置中激活此功能,你将自动获得登录和双因素认证的暴力破解保护。

1
2
3
4
5
6
7
# config/packages/security.yaml
    security:
        firewalls:
            your_firewall_name:
                login_throttling:
                    max_attempts: 3
                    interval: '15 minutes'

请参阅 Symfony Security Bundle 文档 以获取关于此功能及其配置的详细信息。

自定义实现

如果你需要一个自定义的暴力破解保护实现,你可以通过监听 bundle 提供的 事件 轻松实现。

1) 记录失败的双因素尝试

注册 scheb_two_factor.authentication.failure 事件的监听器。记录你需要的内容(IP、用户等)以检测暴力破解攻击。

2) 阻止认证

注册 scheb_two_factor.authentication.attempt 事件的监听器。执行你的暴力破解检测逻辑并决定是否应该阻止此次尝试。 由于该事件在双因素代码被检查之前直接分发,你可以通过抛出一个新的 Symfony\Component\Security\Core\Exception\AuthenticationException 类型的异常来阻止这种情况发生。 该异常将被认证层捕获,并且异常消息将显示给用户。

本作品,包括代码示例,根据 Creative Commons BY-SA 3.0 许可协议授权。
目录
    版本