停止在身份验证时重新生成/使CSRF无效

Pri*_*ner 12 forms csrf symfony-2.3

我目前在我的页面上有表单,无论用户是否登录,都会出现这些表单.用户登录后,会向其显示其中一种表单(使用CSRF).

问题是如果在身份验证后显示此框,则CSRF令牌将失效.我通过允许自己提交没有身份验证检查和$form->isValid()返回的表单来确认这一点,true而在登录后,它给了我false错误:

CSRF令牌无效.请尝试重新提交表单.

我想有三种解决方案 - 停止Symfony在身份验证时重新生成/使CSRF令牌无效,从这些表单中删除CSRF令牌或在身份验证后生成我的表单(但我宁愿避免这种情况).我目前的解决方案是使用身份验证和设置表单标记input值传回新的CSRF令牌.

附加:有谁知道如何查看当前分配的所有CSRF令牌?会议似乎没有举行.

Pri*_*ner 0

感谢 @MarkFox 向我指出了这个 CWE - 尽管我知道它是通过设计实现的,但我希望有一种方法可以让我避免走上最终的路线。

对于任何感兴趣的人,CWE 指出:

在不使任何现有会话标识符无效的情况下对用户进行身份验证或以其他方式建立新的用户会话,将使攻击者有机会窃取经过身份验证的会话。

因此,我建议您沿着我最终的路径走下去,通过 AJAX 发送新的请求令牌并将它们放入相关表单中。


归档时间:

查看次数:

1006 次

最近记录:

11 年,10 月 前