【问题标题】:CSRF_COOKIE_SAMESITE equivalent for django 1.6.5django 1.6.5 的 CSRF_COOKIE_SAMESITE 等效项
【发布时间】:2020-08-17 16:02:54
【问题描述】:

我正在尝试在 salesforce webtab iframe 中启动使用 django 1.6.5 版本编写的应用程序。我在尝试登录时收到“未设置 CSRF cookie”错误。我通过控制台日志了解到,在最新版本的 Chrome 中,只允许设置为 'secure'=True 和 samesite=None 的 cookie。了解到这些设置可以在django后面版本的settings.py中添加

SESSION_COOKIE_SAMESITE = 'None'
CSRF_COOKIE_SAMESITE = 'None'
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

但这在 django 1.6.5 版本中不起作用。我一直在尝试找出如何在我的版本中应用这些设置。

【问题讨论】:

  • 我可以自己写中间件吗?我试过了,但在 cookie 级别似乎没有相同的站点属性。

标签: django python-2.7 security django-csrf samesite


【解决方案1】:

在 Django 1.6.5 中不支持添加相同站点设置,这就是在 settings.py 中添加这些设置不起作用的原因。 Django 3.1 是他们开始支持此设置的地方。我尝试添加自己的中间件并将设置添加到 cookie,但出现无效字段错误。然后我找到了一个我可以使用的库——django-cookies-samesite。我能够将 samesite 设置应用到 None 并将 secure 应用到 True,然后我就能够通过 salesforce web 选项卡登录。

  1. 在 settings.py 中添加这些
SESSION_COOKIE_SAMESITE = 'None'
SESSION_COOKIE_SAMESITE_FORCE_ALL = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
  1. 并将其添加到 MIDDLEWARE_CLASSES 中:
'django_cookies_samesite.middleware.CookiesSameSite',

我获得信息的相关网站:

https://github.com/django/django/pull/8380/files

https://pypi.org/project/django-cookies-samesite/

【讨论】:

  • 你是怎么做到的?在 django-cookies-samesite 文档中,最低 django 版本是 1.11.X
  • @mrroot5 它没有指定最低版本。只是它是为旧版 Django 版本构建的。我已经尝试过了,它对我有用。
  • 在此评论之后,我尝试了它并在 Django 1.8 的最低版本上为我工作。不是所有的东西都像 CRSF cookie,或者对所有 cookie 强制安全,但它可以更改 cookie SameSite。最后我基于它创建了自己的中间件来改变我公司的jwt cookie。
猜你喜欢
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 2016-07-13
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-08
相关资源
最近更新 更多