genedys / csrf-route-bundle
一个Symfony组件,提供了一种简单的方法将CSRF令牌添加到路由中
3.0.0
2017-11-30 07:39 UTC
Requires
- php: ^5.5.9|^7.0
- symfony/framework-bundle: ^3.3|^4.0
- symfony/security-csrf: ^3.3|^4.0
README
此 Symfony3 组件提供了路由注解和选项,以保护路由免受 CSRF攻击,且无需使用表单。
安装
使用 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 Antoine 为 Genedys 创建。
许可证
此组件受MIT许可证保护。