flying/debug-bundle

Symfony 2 扩展包,提供多个工具,使使用 Symfony 2 应用程序的调试器更方便

安装: 77

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

v0.2.7 2015-09-10 14:50 UTC

This package is auto-updated.

Last update: 2024-09-21 02:15:05 UTC


README

此包提供了一些服务,旨在通过在调试器下模拟某些安全相关功能来简化开发 Symfony 2 应用程序的过程

调试器检测

调试器检测由 DebuggerDetectorListener 处理,目前识别 XdebugZend Debugger

如果某些服务需要知道请求是否在调试器下运行,则应实现 DebuggerStatusSubscriberInterface 以在确定状态时获取请求状态。

CSRF令牌验证模拟

当调试表单提交时,在启用 CSRF 验证的情况下禁用调试器下的 CSRF 令牌验证可能很有用。

CSRF令牌验证模拟由配置控制

debug:
    csrf:
        # true to enable CSRF token validation emulation, false to disable it completely
        enabled: true
        # true to allow use of CSRF token validation emulation permanently, 
        # false to enable it only when running under debugger
        permanent: false
        # Status of emulated CSRF token validation
        token_validation_status: true

除非永久启用,否则验证模拟在生产环境中会自动禁用,也可以在开发环境中禁用。启用时,如果请求在调试器下运行,则将替换为配置的值。除非通过启用 permanent 配置选项强制使用模拟,否则将所有 CSRF 验证传递给真实的 CSRF 令牌管理器。

调试认证提供者

调试认证提供者可用于透明地认证需要用于调试/开发目的的用户。例如,调试位于应用程序安全区域内的某些请求,而无需始终修改应用程序的配置(慢、无聊且易出错)。

在使用此功能之前,建议阅读Symfony 书籍中关于安全性的章节和Symfony Cookbook中关于自定义认证提供者的配方。

安装

要使用调试认证提供者,您需要对您的代码和配置进行一些更改。

1. 创建您自己的令牌生成器

安全令牌是 Symfony 中安全性的关键组件,您可以在此了解更多信息。大多数与创建自定义认证提供者相关的任务都由此包处理,但由于令牌对每个特定应用程序来说都非常具体,因此生成令牌是您的任务。幸运的是,这非常简单。令牌生成器应实现 TokenBuilderInterface,但在大多数情况下,您也可以使用 AbstractTokenBuilder 作为基础。您需要实现 build() 方法,该方法接收 Request 对象并需要创建并返回所需的安全令牌,适用于您的应用程序。最简单的实现可能如下所示

public function build(Request $request)
{
    // More about token configuration later
    $config = $this->getTokenConfig();
    $token = new UsernamePasswordToken($config['username'], '', 'debug', $config['roles']);
    return $token;
}

然而,实际的实现可能涉及从数据库或其他地方接收用户对象。如果您在应用程序中使用FOSUserBundle,您可能会发现将他们的 UserManager 注入到类中并从中获取用户很有用。

令牌生成器可以用作简单的类,但最好将其注册为服务,尤其是如果您的令牌构建逻辑依赖于其他服务的信息。

2. 注册调试认证提供者

在实现令牌构建器之后,您需要将调试认证提供者注册到您的安全配置中。注册说明请参阅此处,其形式可能如下所示

security:
    firewalls:
        main:
            pattern: ^/
            debug:
                token_builder: my.token_builder.service.id
            # Rest of your firewall definition

注册调试认证提供者非常重要,必须在您应用中使用的真实认证提供者之前进行,这样它才能提供您生成的调试安全令牌,并禁用其他安全机制。

3. 配置调试认证提供者

调试认证提供者具有以下配置选项

  • token_builder - 您令牌构建器的服务ID或类名。此选项是必需的。
  • token_config - 传递给您的令牌构建器的任意配置信息。它将通过setTokenConfig方法直接传递给您的令牌构建器。例如,您可以传递您想要认证的用户名。
  • enabled - 允许您完全禁用或强制此功能而无需任何其他更改。默认情况下,在调试环境中启用。
  • permanent - 设置为true以在请求不在调试器下运行时也启用用户认证替换。在开发过程中可能很有用,如果您不想总是进行身份验证。默认为false,意味着调试认证提供者仅在请求在调试器下运行时激活。
  • auth_providerauth_listener选项分别定义认证提供者和监听器的服务,通常不应更改。