fantoine / csrf-route-bundle
Symfony2 扩展包,提供了一种简单的方法向路由添加 CSRF 令牌
Requires
- php: >=5.4.0
- symfony/framework-bundle: ~2.1,<3.0
This package is not auto-updated.
Last update: 2024-09-25 14:50:47 UTC
README
*/!\ 此扩展包不再受支持,已迁移至 Genedys/csrf-route-bundle /!*
FantoineCsrfRouteBundle
此 Symfony2 扩展包提供了路由注解和选项,以保护路由免受 CSRF 攻击,而无需使用表单。
安装
使用 Composer 安装扩展包
composer require fantoine/csrf-route-bundle '~1.0@dev'
或者在你的 composer.json
文件中添加以下行
"require": { ... "fantoine/csrf-route-bundle": "~1.0@dev", ... }
然后,在你的应用程序的内核类中注册扩展包
// app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Fantoine\CsrfRouteBundle\FantoineCsrfRouteBundle(), // ... ); }
配置
配置参考
fantoine_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 Fantoine\CsrfRouteBundle\Annotation\CsrfToken; // ... class DefaultController { // ... /** * ... * @CsrfToken */ public function sensibleAction() { //... } // ... }
Twig 集成
由于扩展包提供了自定义路由器,因此 CSRF 令牌会自动附加到使用 path(...)
和 url(...)
在 Twig 模板中生成的 URL 上。
路由器兼容性
此扩展包覆盖了默认的 Symfony 路由器。如果你使用其他执行相同操作的扩展包(例如 JMSI18nRoutingBundle),则此扩展包中的路由器作为适配器自动集成到先前配置的路由器中。唯一要关心的是在覆盖路由器的扩展包之后注册 FantoineCsrfRouterBundle。
致谢
由 Fabien Antoine 创建。
许可证
此扩展包受 MIT 许可证 的约束。