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安全性