python - 集群中的 Django CSRF

标签 python django docker kubernetes

有人可以给我举例说明 CSRF 在集群设置中如何工作吗?

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

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

如果在填写表单期间更新了 docker 镜像,CSRF 站点是否可以正常工作?

谢谢!

最佳答案

Can someone example to me how CSRF works in the cluster setup?

与通常不应该的方式完全相同(CSRF 是跨站点请求伪造,即攻击)。为了防止这种情况发生,您可以向客户分发 secret token ,他们必须将其包含在后续请求中。您的后端必须验证 token 是否有效、适用,并且实际上是由可信来源颁发的。有几种方法可以做到这一点:

  • 您可以使用 MAC(在这种情况下,您拥有与 JSON WebToken 非常接近的东西)。
  • 您可以将 token 保存到某个受信任的存储中,并在后续请求时查询该存储。

这就是它的全部内容。

由于您的 CSRF 保护是由您上述选择的组合产生的,因此如何使其在分布式设置中工作还取决于 CSRF 保护方案的具体实现。

根据 Django 文档,默认的方法是使用“ secret ”,每次用户登录时都会重置该 secret 。这意味着如果两个后续请求访问不同的服务器会触发新的登录,则所有旧的 CSRF token 实际上已失效。因此基于此:

  • 您需要调整您的 Django 项目,以确保不同的实例可以在同一 session 中恢复工作,并且不会触发重新登录
  • 您的所有 Django 实例都需要能够访问相同的登录密码,以便其中任何一个实例都可以验证任何其他实例颁发的 CSRF token 。

关于python - 集群中的 Django CSRF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47479541/

相关文章:

python - 如何使用Paramiko exec_command获取每个依赖的命令执行输出

python - 如果循环为空则显示一条消息

django - Wagtail API - 在 json 输出上显示图像 URL

django - Django 的 Zoho CRM Python SDK v2 初始化问题

amazon-web-services - 适用于后端到边缘位置的AWS体系结构?

python - 在keras中表示多个输入的简单方法?

python - 找不到文件 - Python 单元测试

python - pandas 系列中的矢量化日期解析?

node.js - 在使用 Docker 的 Jenkins Pipeline 的构建后操作中似乎无法触发 "failure"事件

docker - 添加rewrite_by_lua模块到nginx :alpine