genedys/csrf-route-bundle

一个Symfony组件,提供了一种简单的方法将CSRF令牌添加到路由中

安装次数: 35,849

依赖项: 0

建议者: 0

安全性: 0

星标: 1

关注者: 3

分支: 3

开放问题: 3

类型:symfony-bundle

3.0.0 2017-11-30 07:39 UTC

This package is not auto-updated.

Last update: 2024-09-21 09:35:29 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许可证保护。