我正在尝试在我的Symfony 2项目中实现一些Ajax功能。我想使用jquery的$ .post将一些数据发送回我的控制器。但是,当我仅POST数据时,就没有CSRF保护,因为symfony的csrf保护似乎仅适用于表单。
什么是实现此目的的简单方法?
使用表单时,我可以执行$ form-> isValid()来确定CSRF令牌是否通过。我目前正在将要发布的所有内容放入表单中,然后发布。从根本上讲,这意味着我仅使用该表单来实现CSRF保护,这似乎很不客气。
在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);
这个问题可能对您有用