uniondev/csrf-route-bundle

Symfony 扩展包,提供了一种简单的方法向路由添加 CSRF 令牌

安装: 2

依赖者: 0

建议者: 0

安全: 0

星星: 0

关注者: 1

分支: 0

开放问题: 1

类型:symfony-bundle

dev-master / 3.0.x-dev 2020-02-28 11:24 UTC

This package is auto-updated.

Last update: 2024-09-28 21:45:36 UTC


README

这个 Symfony3 扩展包提供了路由注解和选项,用于保护路由免受 CSRF 攻击,而不需要使用表单。

Latest Stable Version Total Downloads Latest Unstable Version License SensioLabsInsight

安装

使用 Composer 安装扩展包

composer require genedys/csrf-route-bundle

或者在你的 composer.json 文件中添加以下行

    "require": {
        ...
        "genedys/csrf-route-bundle": "^3.0",
        ...
    }

然后,在你的应用程序的 bundles.php 文件中注册扩展包

    // bundles.php
    return [
        // ...
        Genedys\CsrfRouteBundle\GenedysCsrfRouteBundle => ['all' => true],
        // ...
    ];

配置

配置参考

genedys_csrf_route:
    enabled: true
    field_name: _token
  • enabled : 启用或禁用令牌验证(默认:true);
  • field_name : 追加到路由 URL 中的字段名称(默认:_token)。

使用

要使用此包,您只需将一些配置添加到您想要保护的路由中即可。

该扩展包添加了一个路由器,可以在生成路由时附加令牌查询参数,并在控制器监听器上验证在调用的路由上的令牌。

选项配置

该扩展包检查控制器调用,并在其中查找 csrf_token 选项。此选项的可用参数有:

  • token : 令牌参数名称(默认为 _token
  • intention : 令牌意图。不同的意图生成不同的令牌(默认为 null,结果为路由名称)。
  • methods : 验证 CSRF 令牌时使用的 HTTP 方法(默认 GET)。
# app/config/routing.yml
homepage:
    ...
    options:
        - csrf_token:
            - token: '_token'
            - intention: null
            - methods: [GET]

您还可以仅指定 csrf_token 选项为 true 以使用默认参数。

# app/config/routing.yml
homepage:
    ...
    options: { csrf_token: true }

注解配置

如果您使用注解来配置您的路由,那么向敏感操作添加附加注解是最简单的方法。

<?php
// src Acme\DemoBundle\Controller\DefaultController.php

// ...
use Genedys\CsrfRouteBundle\Annotation\CsrfToken;
// ...

class DefaultController {
    // ...
    /**
     * ...
     * @CsrfToken
     */
    public function sensibleAction()
    {
        //...
    }
    // ...
}

Twig 集成

由于扩展包提供了一个自定义路由器,因此 CSRF 令牌会自动附加到使用 path(...)url(...) 在 Twig 模板中生成的 URL 上。

路由器兼容性

此扩展包覆盖了默认的 Symfony 路由器。如果您使用其他执行相同操作的扩展包(例如 JMSI18nRoutingBundle),则此扩展包集成的路由器将自动作为适配器在先前配置的路由器上工作。唯一需要注意的是,在覆盖路由器的扩展包之后注册 GenedysCsrfRouterBundle。

鸣谢

Fabien AntoineGenedys 创建。

许可

此扩展包受 MIT 许可证 的约束。