uniondev / csrf-route-bundle
Symfony 扩展包,提供了一种简单的方法向路由添加 CSRF 令牌
Requires
- php: ^5.5.9|^7.0
- symfony/framework-bundle: ^3.3|^4.0
- symfony/security-csrf: ^3.3|^4.0
This package is auto-updated.
Last update: 2024-09-28 21:45:36 UTC
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 许可证 的约束。