我有一个混合 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 上遇到了同样的行为。有小费吗?我希望这不是预期的行为......