小编典典

Symfony CSRF和Ajax

ajax

我正在尝试在我的Symfony 2项目中实现一些Ajax功能。我想使用jquery的$
.post将一些数据发送回我的控制器。但是,当我仅POST数据时,就没有CSRF保护,因为symfony的csrf保护似乎仅适用于表单。

什么是实现此目的的简单方法?

使用表单时,我可以执行$ form->
isValid()来确定CSRF令牌是否通过。我目前正在将要发布的所有内容放入表单中,然后发布。从根本上讲,这意味着我仅使用该表单来实现CSRF保护,这似乎很不客气。


阅读 229

收藏
2020-07-26

共1个答案

小编典典

在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);

这个问题可能对您有用

2020-07-26