【问题标题】:How does cookie "Secure" flag work?cookie“安全”标志如何工作?
【发布时间】:2012-11-23 15:55:28
【问题描述】:

我知道带有secure 标志的cookie 不会通过未加密的连接发送。我想知道这是如何深入工作的。

谁负责确定是否发送 cookie?

【问题讨论】:

    标签: http cookies session-cookies


    【解决方案1】:

    客户端只为加密连接设置这个,这在RFC 6265中定义:

    Secure 属性将 cookie 的范围限制为“安全”通道(其中“安全”由用户代理定义)。当 cookie 具有 Secure 属性时,只有当请求通过安全通道(通常是 HTTP over Transport Layer Security (TLS) [RFC2818])传输时,用户代理才会在 HTTP 请求中包含 cookie。

    虽然看起来对于保护 cookie 免受网络攻击者的攻击很有用,但 Secure 属性只保护 cookie 的机密性。活跃的网络攻击者可以覆盖来自不安全通道的安全 cookie,从而破坏其完整性(有关详细信息,请参阅第 8.6 节)。

    【讨论】:

    • 如果客户端还没有cookie并且它们应该从服务器端发送(例如登录),服务器端是否会决定在响应中包含cookie?
    • 服务器最初通过“Set-Cookie headers”设置cookie
    【解决方案2】:

    关于这个主题的另一个词:

    省略 secure 因为您的网站 example.com 完全是 https 是不够的。

    如果您的用户明确访问http://example.com,他们将被重定向到https://example.com,但这已经太晚了;第一个请求包含 cookie。

    【讨论】:

    • 我知道这是旧的,但 HSTS 预加载通过防止此问题频繁发生来帮助这种情况。它仍然不是 100% 修复,但如果您真的想避免安全 cookie,这只是需要考虑的另一件事。
    • @Mr.MonoChrome 为什么要避免使用安全 cookie?
    • @Mr.MonoChrome 虽然我相信一些较旧或较低规格的浏览器甚至不支持 HSTS
    • 好点。对于 .NET 应用程序,最好在 IIS(或 web.config)中进行重定向,而不是以编程方式(例如 globals.asax)
    • 因此,如果您不从 http 重定向到 https,并且仅在 https 上提供服务,您就不需要secure ?
    猜你喜欢
    • 2014-02-03
    • 2016-09-11
    • 2018-03-25
    • 2018-02-03
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 2010-11-29
    • 2022-01-07
    相关资源
    最近更新 更多