【问题标题】:Should "request" cookies have the secure flag set?“请求”cookie 是否应该设置安全标志?
【发布时间】:2016-02-18 03:14:30
【问题描述】:

我有一个 django 应用程序。该应用程序有 2 个从服务器返回的主要 cookie(csrftoken 和 sessionid)。我将 settings.py 文件中的 SESSION_COOKIE_SECURE 和 CSRF_COOKIE_SECURE 标志设置为 True,如果我检查登录到我的应用程序的初始请求,我会发现这两个 cookie 都在服务器的响应中设置了“安全”标志。

当我在我的应用程序中检查 cookie 时,我注意到有“请求 cookie”和“响应 cookie”。 “响应cookie”是设置了标志的cookie。请求 cookie 没有。

我的问题:有没有办法强制“请求 cookie”设置其安全标志?这甚至是安全问题吗?我的应用程序流量是通过 https 的,所以浏览器和服务器之间的所有连接都已经被加密了......

【问题讨论】:

    标签: django security cookies


    【解决方案1】:

    实际上并不能那样工作......标志只存在于Set-Cookie 标头(响应)中。

    当客户端(浏览器)接收到Set-Cookie标头时,它会将标志与cookie值一起存储,但仅供自己使用(以便浏览器自己知道何时以及必要时将 cookie 值发送到何处)。

    Cookie 标头(请求)不能包含标志;它只是<cookie-name>=<cookie-value> 对的列表,当您(服务器)收到它们时,您甚至不能保证自己设置它们。
    这是因为 任何 应用程序在同一域名下可以为该域设置 cookie。例如,在 example.com/foo 上运行的应用程序可以为 example.com/bar 甚至为 another.example 设置 cookie。 com.

    但是,排除真正可怕的浏览器错误的可能性,您可以确定,如果您在响应中为 cookie 设置“安全”标志,接收浏览器将不会通过非加密连接发送它。 它并不是真正 100% 保证的,但它确实是您唯一的选择,而且几乎整个网络都依赖于正常运行的浏览器,所以您并不孤单。

    遗憾的是,这就是 cookie 的工作原理。如果您有兴趣了解更多关于它们的信息,请阅读它们的官方标准here

    【讨论】:

      猜你喜欢
      • 2018-03-25
      • 2015-12-04
      • 2012-10-13
      • 2011-11-25
      • 2016-09-11
      • 2017-09-11
      • 2020-09-07
      • 2018-02-24
      • 2018-08-06
      相关资源
      最近更新 更多