Play框架中的CSRF保护落后于负载平衡器

时间:2016-03-10 10:33:54

标签: scala playframework cluster-computing load-balancing csrf

我在AWS负载均衡器后面的群集中使用Play。为防止CSRF攻击,我将@ CSRF.formFields添加到所有表单提交。但我随机得到403错误,我想这是因为服务器发出的令牌 服务器B不会接受。

你以前遇到过这个问题吗?您是否需要将会话存储在分布式缓存或数据库中? Play中是否有我不知道可以解决此问题的功能?

顺便说一下,类似的问题被问到here没有答案。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

尝试把它放在你的application.conf

trustxforwarded=true

或检查您的负载均衡配置,也许在这里您会找到一些有用的信息 https://www.playframework.com/documentation/2.3.x/HTTPServer

答案 1 :(得分:0)

据我所知,"申请秘密"是整个应用程序的属性,而不是单个实例/服务器。

因此,它应该在群集中的所有服务器上都相同。这自然会#34;修复" CSRF令牌验证。

另一个例子 - 会话:默认情况下,会话数据存储在会话cookie的客户端,会话cookie使用应用程序机密作为盐进行签名 - 如果它在同一应用程序的不同服务器上有所不同 - 这会破坏客户端会话的整个想法,因为会话cookie只能在一台服务器上有效。

P.S。关于Django的密钥的类似帖子:Django SECRET_KEY in a distributed setup

相关问题