session - 安全 cookie 和混合 https/http 站点使用

标签 session cookies https security

许多网站似乎支持 https,但不使用安全 cookie。我想让我的网站使用安全 cookie,但允许使用 http 访问某些内容。

执行此操作的一个明智方法似乎是为真实 session 提供一个安全 cookie,以及一个非安全 cookie,后者只是一个标志来说明用户是否已登录(以在 session 中显示不同的内容)标题,例如注销链接而不是登录链接)。此 cookie 不会包含任何“真实” session 信息,只是为了使网站可以在网站的 http 部分为登录用户显示与注销用户略有不同的页面。

将整个网站设置为 https 是另一种选择,但这似乎比纯 http 慢很多,因此并不是很理想。

为什么网站不使用这种设置并拥有安全 cookie?如今,cookie 被盗的可能性似乎使得安全 cookie 成为必需品。有没有更好的方法来实现同样的目标?

最佳答案

您提出的解决方案似乎可行,只要您不介意未经授权的人能够“就像登录一样”查看网站的非安全(http)部分 - 即只要网站的 http 部分不包含任何敏感信息,并且登录用户和未登录用户之间的唯一区别就是 header 中无害的内容。

它不经常使用的原因可能是:

  • 这种情况可能并不常见。通常,如果您非常关心网站部分的安全,您可以将登录 session 限制为该安全部分,或者让整个网站始终使用 HTTPS(如 Paypal)。
  • 现有的解决方案既安全又具有更多功能,例如通过 HTTPS 登录表单登录某人并在将其传输回 HTTP 时维护该 session 。 OpenID 就是一个例子。还可以考虑 flickr 或 gmail:它们的登录页面始终是 HTTPS,但是一旦 session 开始,您就可以迁移回 HTTP,同时安全地维护 session 。
<小时/>

更新(2014 年 8 月)

自从我在 2009 年写下这篇文章以来,为登录屏幕建立安全连接但在登录后返回 HTTP 的做法几乎消失了。

使用 HTTPS 端的开销不再被认为是一个大问题。由 Google 首创的新 SPDY 协议(protocol)(现已演变成 HTTP/2)受到跨浏览器和主要 Web 服务器的支持,并提高了 HTTPS 速度。

最后,隐私被认为比以往任何时候都更加重要,即使对于对身份验证不重要的操作也是如此,例如撰写评论、上传照片等。

Google 最近甚至表示,仅使用 HTTPS 的网站将开始在搜索引擎排名中受益。

关于session - 安全 cookie 和混合 https/http 站点使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/709085/

相关文章:

javascript - 记住用户在上一页选择的内容

security - JWT 刷新 token

javascript 和 jsp 将 javascript 变量获取到我的 jsp 页面

python - 如何在 Django 中跟踪用户 session 的长度

node.js - 如何使用请求将cookie从nodejs应用程序传递到另一台服务器

http - 拦截 HTTPS 数据包的数据包嗅探器可以看到哪些信息?

apache - HTTPS 异常(exception)

ruby-on-rails - 使用 Rails 3.1 的 Heroku 中特定于 SSL 的主机名

php - 在 Laravel 5.1 中更改 session 文件名

javascript - 无法读取未定义的属性 "cart",这是一个 session 属性