Django CSRF集群

有人能告诉我CSRF如何在群集设置中工作吗?

我有一个kubernetes集群托pipe一个django网站,我偶尔遇到403错误的问题。 我在kubernetes中有多个站点负载均衡实例。

当POST从1个实例发送并由另一个实例处理时,CSRF如何工作?

如果在填写表格的时候更新了docker图像,CSRF网站是否工作?

谢谢!

有人能告诉我CSRF如何在群集设置中工作吗?

完全相同的方式通常不应该(CSRF是跨站请求伪造,即攻击)。 为了防止这种情况发生,您将秘密令牌交给您的客户,他们必须随后提出请求。 您的后端必须validation令牌是有效的,适用的,实际上是由可信来源发放的。 有几种方法可以做到这一点:

  • 你可以使用MAC(在这种情况下,你有一些非常接近JSON WebTokens)。
  • 您可以将令牌保存到某个受信任的商店,并在随后的请求中查询该商店。

这几乎是所有一切

由于您的CSRF保护是从上面所做的select组合出现的,因此如何使它在分布式设置中工作也取决于CSRF保护scheme的具体实现。

依靠Django文档,默认的方法是使用一个“秘密”,每次用户login时都会重置。这意味着如果为两个后续请求点击不同的服务器会触发新的login,所有旧的CSRF令牌都会有效无效。 所以基于此:

  • 您需要调整您的Django项目以确保不同的实例可以恢复使用同一个会话,并且不会触发重新login
  • 所有的Django实例都需要能够访问相同的每个login密码,以便其中任何一个都可以validation由其他任何人发出的CSRF令牌。

您应该为每个实例禁用CSRF,并从API网关pipe理CSRF安全性