enumag / 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。
致谢
许可证
此扩展包受MIT许可证的约束。