suin / symfony2-csrf-firewall-bundle
Symfony2 的跨站请求伪造防火墙扩展包
1.0.0
2012-10-22 16:08 UTC
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2024-09-06 08:16:44 UTC
README
这是一个防火墙扩展包,用于保护您的 Symfony2 网站免受 CSRF(跨站请求伪造)攻击。此扩展包几乎可以自动运行,因此您无需为每个页面考虑 CSRF 保护。
特性
- 所有 POST 方法表单都将受到 CSRF(即使您不使用 Symfony Form 的 anti-CSRF)保护
要求
- PHP 5.3 或更高版本
安装
将 suin/symfony2-csrf-firewall-bundle
添加到您的 composer.json 文件中
{ "require": { "suin/symfony2-csrf-firewall-bundle":">=1.0.0" } }
执行 composer 进行安装
$ php composer.phar update suin/symfony2-csrf-firewall-bundle
将 Suin\CSRFFirewallBundle\SuinCSRFFirewallBundle
添加到您的 app/AppKernel.php
文件中
class AppKernel extends Kernel { public function registerBundles() { $bundles = array( ... new Suin\CSRFFirewallBundle\SuinCSRFFirewallBundle(), ); ... ...
工作原理
SuinCSRFFirewallBundle 总是在所有 POST 方法中检查 CSRF 令牌。如果未提供令牌或提供的令牌无效,SuinCSRFFirewallBundle 将向客户端返回 404 错误响应,并在执行动作之前停止进程。(确切地说,这个过滤器是在 kernel.controller
事件上工作的。)
在响应时(确切地说是在 kernel.response
事件上),SuinCSRFFirewallBundle 会找到响应 HTML 中的所有 POST 方法表单,并将其自动嵌入 CSRF 令牌。
选项
如何禁用特定动作的 CSRF 检查
通过向特定动作方法添加 @CSRF(check=false)
注解,您可以在动作中禁用 CSRF 检查。
<?php namespace Acme\YourBundle\Controller; use Suin\CSRFFirewallBundle\Annotations\CSRF; class FooController extends Controller { ... /** * @Route("/{id}/create/", name="create") * @Template() * @CSRF(check=false) */ public function createAction($id) { ... return []; } ... ...
如何更改令牌键名
默认令牌键名为 __token__
。如果您需要更改令牌键名,请编辑 app/config/parameters.yml
并定义它。
parameters: suin.csrf_firewall.token_name: your_favorite_token_name
许可证
MIT 许可证,请参阅 LICENSE