CSRF令牌在负载均衡的symfony2应用程序中无效

时间:2012-02-09 12:26:37

标签: mysql session symfony load-balancing

我继承了一个symfony2项目,它在实时环境中运行在2个以上的负载均衡服务器上。会话存储在应用程序使用的mysql数据库中。

我遇到的问题是,在有CSRF保护的表单上,有时令牌回来无效。我猜这是因为生成令牌的服务器并不总是获取表单POST的服务器,并且无法匹配正在发送的令牌。

我对symfony非常非常新,并尝试了一些不同的解决方案来使用Symfony框架中的会话和SessionCsrfProvider生成令牌。

有人能指出我正确的方向还是有类似的问题?

1 个答案:

答案 0 :(得分:2)

CsrfProviders将通过连接密钥(来自parameters.ini)+意图(默认为空)+ 会话ID 来生成令牌。

默认情况下,symfony配置为使用SessionCsrfProvidersession_id()使用会话存储 ID。

如果您使用的是PDOSessionStorage或NativeSessionStorage对象,它将返回session_id()

这可能意味着您的{{1}}不同,具体取决于哪台机器处理请求。