每次提交表单时都会检测到Symfony CSRF攻击

时间:2010-10-27 21:48:45

标签: symfony1 doctrine symfony-1.4

登录表单工作正常,但我提交的任何其他表单(如编辑或创建数据)都会检测到CSRF攻击错误。我试图清除symfony和浏览器缓存,删除cookie,尝试多个浏览器和多台计算机。

这会导致什么?当我关闭CSRF保护时,它可以正常工作。

4 个答案:

答案 0 :(得分:4)

每次我收到此错误都是因为我忘记在表单中呈现隐藏的标签。别忘了添加这一行:

<?php echo $form->renderHiddenFields() ?>

答案 1 :(得分:2)

很难用所提供的信息回答这个问题。这有两种可能性:

  • 您确定CSRF令牌实际上已提交吗?
  • 处理这两个值的表单是否相同? Symfony中的CSRF令牌由三个部分生成:CSRF秘密(在app.yml中设置),session_id和表单类。这三件事中有一件有变化吗?

答案 2 :(得分:0)

确保模板中的表单包含CSRF标记,并使用以下格式提交:

<?php echo $form['_csrf_token']->render(); ?>

我会走出困境并猜测登录表单是否有效,因为您只是使用现成的SfGuard代码,而在您自己的表单上,您已从表单中省略了标记....? / p>

答案 3 :(得分:0)

要检查这一点,您应该在执行POST时尝试运行Fiddler并检查%5B_csrf_token%5D = {whateveryourtokenis}的有效负载。