我有一个django应用程序。该应用程序有2个主要的cookie从服务器返回(csrftoken和sessionid)。我将settings.py文件中的SESSION_COOKIE_SECURE和CSRF_COOKIE_SECURE标志设置为True,如果我检查登录到我的应用程序的初始请求,我看到这两个cookie都在服务器的响应中设置了“安全”标志。
当我在我的应用程序中检查cookie时,我注意到有“请求cookie”和“响应cookie”。 “响应cookie”是设置了标志的那些。请求cookie没有。
我的问题:是否有某种方法可以强制“请求Cookie”设置其安全标志?这甚至是安全问题吗?我的应用程序流量超过了https,因此浏览器和服务器之间的所有连接都已经加密了......
答案 0 :(得分:4)
它并没有真正起作用......标志只出现在Set-Cookie
标题中(响应)。
当客户端(浏览器)收到Set-Cookie
标头时,它会将标志与cookie值一起存储,但仅用于自己的用途(以便浏览器本身可以知道必要时何时何地发送cookie值。
Cookie
标头(请求)不能包含标志;它只是<cookie-name>=<cookie-value>
对的列表,当您(服务器)收到它们时,您甚至不能保证自己设置它们。
这是因为同一域名下的任何应用程序都可以为该域设置cookie。例如,在 example.com/foo 上运行的应用程序可以为 example.com/bar 设置cookie,甚至可以为 another.example设置cookie。 COM
然而,排除可怕的浏览器错误的可能性,你可以肯定,如果你设置&#34;安全&#34;在您的回复中标记Cookie,接收浏览器不会通过非加密连接发送它 它并非真正100%保证,但它确实是您唯一的选择,几乎整个网络都依赖于浏览器的正常运行,因此您并不孤单。
可悲的是,这就是Cookie的工作原理。如果您有兴趣了解更多相关信息,请阅读他们的官方标准here。