3

我有一个混合 HTTP / HTTPS 的站点。当用户登录时,她会得到两个 cookie:

  • 带有她(签名)用户名、登录过期时间和“不安全”标志的常规 cookie
  • 带有她(签名)用户名、登录过期时间和“安全”标志的安全 cookie
    • 请注意,如果您在签名内容中没有安全/不安全标志,攻击者可以拦截常规 cookie,然后将其作为安全 cookie 发送(我的第一个实现犯了这个错误)

我在 HTTP 页面上使用常规 cookie(只是为了在她浏览网站的营销部分时显示她的名字)。然后,当她在 HTTPS 页面(任何用户特定页面)上时,我使用安全 cookie。

我从安全 cookie 和混合 https/http 站点使用中得到了这个想法。

一切都很好,除了当用户从 HTTPS 页面导航到 HTTP 页面时,所有安全 cookie 都会被删除 - 这意味着他们即使在访问单个 HTTP 页面后也无法返回 HTTPS 页面。我应该提到有一个“301 永久移动”将用户从 HTTPS 重定向到 HTTP。

我的网站没有清除安全 cookie。我知道浏览器不应该在用户查看 HTTP 站点时向我发送安全 cookie,但我希望 cookie 在其生命周期内一直存在,并在用户再次访问 HTTPS 页面时被发送。

我在 Chrome、Firefox 和 IE 上遇到了同样的行为。有小费吗?我希望这不是预期的行为......

4

1 回答 1

3

哎呀,真丢人。这就是我的问题所在。

  • 当用户尝试从 HTTP 访问 HTTPS 站点时,他们的请求将以 HTTP 开头
  • 我会检查他们的登录凭据(这会失败,因为安全 cookie 不存在),然后将它们重定向到 HTTPS。我的“需要登录”和“需要 HTTPS”系统是分开的(现在是一个糟糕的设计,但在登录 cookie 不安全的糟糕过去很方便)
  • 我以为我的安全 cookie 被删除了,因为当显示的页面是 HTTP 时,Chrome cookie 浏览器不显示安全 cookie。饼干一直在那里。
于 2013-05-25T17:57:34.163 回答