当前位置: 首页 > 面试题库 >

Symfony CSRF和Ajax

羊舌航
2023-03-14
问题内容

我正在尝试在我的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);

这个问题可能对您有用



 类似资料:
  • 问题内容: 基本上就是这个问题(括号很重要) 问题答案: 并且针对 所有 请求 一起使用 ,在第 一个 同时请求开始时触发,然后在该同时批处理的 最后一个 完成时触发。 因此,假设您一次发出3个请求,在第一个请求开始时触发,在最后一个请求返回时(它们不一定按顺序完成)触发。 这些事件 没有 任何参数,因为它们是针对一批请求的: 并在 每个请求 发送/完成后触发一次。这就是为什么这些处理程序传递参数

  • 问题内容: 当我使用ajax从数据库中检索数据时,如果我从数据库中检索到的数据等于saveHere,则会出现此问题,它将再次循环直到与变量saveHere不匹配,它将冻结浏览器直到数据我检索到的结果不等于saveHere。 这是一个例子: 我真的需要建议。先感谢您。对不起,语法。 问题答案: 我不知道确切的情况或要实现的目标,但是我说您进行AJAX调用的方式非常危险,因为它有可能每秒不断地发出请求

  • 问题内容: Facebook Ajax如何工作?2-3个月前,他们使用#,但现在整个地址栏都在变化。 问题答案: 所使用的第一种方法称为“ Ajax爬行 ”。 但是我认为您正在谈论的新方法仅仅是HTML5 History API 。Github正在使用这种方法来浏览树,您可以在此处了解更多信息。(我建议所有读者阅读和观看视频,因为它非常有帮助) 编辑: 只是要指出,Facebook肯定在使用HTM

  • 问题内容: 和和有什么区别? 在哪个条件下使用哪个更好? 问题答案: 是最可配置的,您可以在其中对HTTP标头等进行精细控制。您还可以使用此方法直接访问XHR对象。还提供了更细粒度的错误处理。因此可能会更复杂并且通常没有必要,但有时非常有用。您必须自己通过回调处理返回的数据。 只是它的简写,但抽象了一些配置,为隐藏的内容设置了合理的默认值。将数据返回给回调。它仅允许GET请求,因此附有类似抽象的功

  • 问题内容: 在我们的网站中,某些页面使用SSL,但是大多数页面却不使用SSL(因为它们需要由网络漫游器抓取)。 它几乎可以归结为用户登录的任何页面,除了SSL协议之外,有一些例外, 但是用户首先必须从非https页面登录(登录表单是从任何页面的屏幕顶部拖放的表单)。 所以, 如何通过ajax强制请求使用SSL? 这样安全吗? 问题答案: 它违反了JavaScript的同源策略,因为它没有看到HTT

  • 我试图在我的symfony2项目中实现一些ajax功能。使用jquery的$。张贴我想发送一些数据回我的控制器。然而,当我刚刚发布数据时,没有CSRF保护,因为symfony的CSRF保护似乎只适用于表单。 有什么非常简单的方法来实现这一点? 使用表单时,我可以只做$form-