【发布时间】:2025-12-08 02:25:01
【问题描述】:
我正在开发一个网站,您可以在其中“添加朋友”另一个用户,就像 facebook 一样。现在,我放了一个链接,当你点击它时,AJAX 调用就完成了。
在坚持新友谊之前,我检查请求是否是 Ajax,但我想更进一步并增加更多安全性。一个页面可以有超过 10 个链接(可能的请求),所以...我不知道我是只需要一个令牌,还是每个链接一个令牌。
另一个疑问是......如何使用 Symfony 生成令牌并检查是否有效?重点介绍如何在初始控制器上生成令牌,然后,如何在 addFriend 控制器(接收 ajax 调用)上进行验证。
我尝试使用它来生成令牌:
然后检查令牌:
https://symfony.com/doc/current/controller/csrf_token_validation.html
但始终返回令牌无效有效。
【问题讨论】:
-
将表单创建为普通的 Symfony 表单,然后将其加载到您的模板中并通过 ajax 发送表单。它将像任何其他 Symfony 表单一样拥有 CSRF 令牌
-
谢谢,但对我来说,为没有表单元素创建表单似乎是一种不好的做法。
-
它将有一个元素 - CSRF 令牌。它可能会有其他隐藏字段。这不是坏习惯,它以预期的方式使用 Symfony 框架
-
只需确保使用用于验证它的相同
'token_id'生成令牌。 -
如果你在树枝上下文中,你可以使用
{{ csrf_token('token_id') }}
标签: php jquery ajax symfony csrf