metaclass-nl/authentication-guard-bundle

此包已被弃用,不再维护。没有建议的替代包。

Symfony 2 的身份验证保护器,旨在防止暴力破解和字典攻击

v0.5.0 2017-09-19 09:00 UTC

This package is auto-updated.

Last update: 2024-06-15 08:32:34 UTC


README

Symfony 2 的身份验证保护器

此包不再维护,并将存档。Symfony 本身就有防止暴力破解攻击的保护措施。

介绍

OWASP 指南指出:“应用程序必须保护凭证免受测试指南中详细说明的常见身份验证攻击”。Symfony 2 拥有防火墙和一系列身份验证组件,但没有用于防止暴力破解和字典攻击的组件。此包旨在保护用户凭证免受这些身份验证攻击。它基于 OWASP 指南中描述的“阈值控制器”。

特性

  • 通过用户名和客户端 IP 地址阻止频繁失败的登录尝试的主要身份验证路由

  • 为隐藏是否存在与用户名关联的账户,任何尝试次数过多的用户名都可能被阻止,无论该用户名是否已存在以及账户状态如何

  • 在失败的登录锁定(由本包执行)和最终的管理员锁定(可能由 UserBundle 执行)之间做出逻辑上的区分,以便大规模重新启用所有用户名时不会解锁被管理员锁定的用户(OWASP 要求)

  • 在身份验证成功后自动释放用户名

  • 存储计数器而不是单个请求,以防止暴力攻击导致数据库洪水

需求

此包适用于 symfony 框架,并且此版本需要 Symfony >=2.8.1。(对于 Symfony ~2.3 使用 v0.3,对于 Symfony 2.7 使用 v0.4)需要 metaclass-nl/tresholds-governor 0.3@dev,但服务配置仍然需要 Doctrine DBAL >=2.3。

发行说明

这是一个预发布版本,正在开发中。

目前,此包只能通过 security.authentication.listener.form 服务(默认:Symfony\Component\Security\Http\Firewall\UsernamePasswordFormAuthenticationListener)保护基于表单的身份验证。

针对不同情况抛出特定类型的异常(用于日志记录),并将隐藏这些异常之间差异的任务留给登录表单,这些差异不应报告给用户。

由于数据库查询性能的差异,可能容易受到通过时间攻击的用户名枚举的影响,这些差异通常用于频繁和偶尔使用的用户名。这通过等待直到达到固定的执行时间来缓解。在正常情况下,如果 fixedExecutionSeconds 设置得足够长,则应该足够。但是,在高(数据库)服务器负载下,当性能下降时,在特定条件下,信息可能仍然可以通过时间攻击提取。此外,针对时间攻击的措施尚未针对实际有效性进行测试。

在 MySQL 5.5 和 5.7 上进行了测试。在 PHP7.0.1 上进行了测试。在 Symfony 3.0.1 和 3.1.3 上进行了测试。(没有 CSRF 令牌)在 Symfony 2.8.1 上与 FOSUserBundle 1.3.6 和 6ccff96 (> 2.0.0 alpha3)进行了测试。在 Symfony 3.2.12 和 3.3.5 上与 FOSUserBundle 2.0.1 和 php 7.0.18 进行了测试。

文档

支持

MetaClass 提供基于商业的此包的应用和扩展以及额外的安全措施的帮助和支持。

http://www.metaclass.nl/site/index_php/Menu/10/Contact.html

版权和许可

除非另行通知,否则版权所有(c)2014 MetaClass Groningen

此包采用 MIT 许可证。请参阅包中的完整许可证。

Resources/meta/LICENSE

本软件按“现状”提供,不提供任何明示或暗示的保证,包括但不限于适销性、适用于特定目的和非侵权性保证。在任何情况下,作者或版权持有人不对任何索赔、损害或其他责任承担责任,无论源于、源于或与软件或软件的使用或其他方式相关,包括但不限于合同行为、侵权或其他行为。