暴力破解保护
暴力破解保护对于双因素认证至关重要,否则攻击者可以轻易猜到认证代码。
登录节流
在 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
类型的异常来阻止这种情况发生。 该异常将被认证层捕获,并且异常消息将显示给用户。
本作品,包括代码示例,根据 Creative Commons BY-SA 3.0 许可协议授权。