【发布时间】:2013-05-20 00:04:27
【问题描述】:
我有一个混合使用 HTTP / HTTPS 的站点。当用户登录时,她会得到两个 cookie:
- 带有她(签名)用户名、登录过期时间和“不安全”标志的常规 cookie
- 带有她(签名)用户名、登录过期时间和“安全”标志的安全 cookie
- 请注意,如果您在签名内容中没有安全/不安全标志,攻击者可以拦截常规 cookie,然后将其作为安全 cookie 发送(我的第一个实现犯了这个错误)
我在 HTTP 页面上使用常规 cookie(只是为了在她浏览网站的营销部分时显示她的名字)。然后,当她在 HTTPS 页面(任何用户特定页面)上时,我使用安全 cookie。
我的想法来自Secure cookies and mixed https/http site usage。
一切都很好,除了当用户从 HTTPS 页面导航到 HTTP 页面时,所有的安全 cookie 都会被删除 - 这意味着他们即使在访问单个 HTTP 页面后也无法返回 HTTPS 页面。我应该提一下,有一个“301 永久移动”将用户从 HTTPS 重定向到 HTTP。
我的网站没有清除安全 cookie。我知道浏览器不应该在用户查看 HTTP 站点时向我发送安全 cookie,但我希望 cookie 在其生命周期内一直存在,并在用户再次访问 HTTPS 页面时发送。
我在 Chrome、Firefox 和 IE 上遇到了同样的行为。有小费吗?我希望这不是预期的行为...
【问题讨论】:
-
这可能是一个愚蠢的问题,但为什么首先要混合使用 http 和 https 呢?为什么不在你的所有网站上都使用 https 呢?
-
cookies有不同的名字吗?
-
绝对是一个有效的问题!该网站有很多营销和文档。您可以轻松地将其全部放在 https 下,这很好。除了现在您的 URL 看起来像“secure.domain.com”而不是“www.domain.com”。并且文档和诸如此类的东西有点松散(评论和诸如此类)。而用户页面是非常敏感的操作。我希望用户知道他们在“www-land”或“secure-land”中。而且我太穷了,无法购买另一个 SSL 证书 ;-)
-
Cookie 确实有不同的名称,例如“cookie_secure”、“cookie_regular”。它们都有相同的路径“/”,但这应该没问题。
标签: security session cookies https session-cookies