我正在尝试在我的 Symfony 2 项目中实现一些 ajax 功能。使用 jquery 的 $.post 我想将一些数据发送回我的控制器。然而,当我只是 POST 数据时,没有 CSRF 保护到位,因为 symfony 的 csrf 保护似乎只适用于表单。
实现这一点的非常简单的方法是什么?
使用表单时,我只需执行 $form->isValid() 即可查明 CSRF 令牌是否通过。我目前正在将要发布的所有内容放入表单中,然后发布。这基本上意味着我只使用该表单来实现 CSRF 保护,这看起来很hacky。
在 Symfony2 中,CSRF 令牌默认基于会话。如果你想生成它,你只需要获取这个服务并调用生成方法:
//Symfony\Component\Form\Extension\Csrf\CsrfProvider\SessionCsrfProvider by default
$csrf = $this->get('form.csrf_provider');
//Intention should be empty string, if you did not define it in parameters
$token = $csrf->generateCsrfToken($intention);
return new Response($token);
这个问题 https://stackoverflow.com/q/11466837/970721可能对你有用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)