当前位置:  开发笔记 > 运维 > 正文

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

如何解决《安全cookie和混合https/http站点使用》经验,为你挑选了3个好方法。

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

一个明智的做法似乎是为真实会话提供一个安全的cookie,以及一个非安全的cookie,它只是一个标志,表示用户是否登录(在标题中显示不同的内容,如注销链接而不是登录链接).此cookie不包含任何"真实"会话信息,只是为了使网站可以显示登录用户与网站http部分登出的页面略有不同的页面.

将整个站点作为https是另一种选择,但这似乎比普通的http慢得多,所以不是很理想.

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



1> thomasrutter..:

您提出的解决方案似乎可行,只要您不介意未经授权的人员能够查看网站的非安全(http)部分,就像他们已登录一样' - 即只要该站点的http部分不包含任何敏感信息,登录和未登录用户之间的唯一区别是标题中的无害.

它不经常使用的原因可能是以下之一:

这种情况可能不太常见.通常,如果您足够关心网站的一部分是安全的,那么您只需将登录会话限制在该安全部分,或者您将使整个网站始终使用HTTPS(如Paypal).

存在预先存在的解决方案,这些解决方案是安全的并且能够实现更多,例如以HTTPS登录表单登录某人并在将其转移回HTTP时维护该会话. OpenID就是一个例子.还要考虑flickr或gmail:他们的登录页面始终是HTTPS,但是一旦会话开始,您将迁移回HTTP,同时安全地维护会话.


更新(2014年8月)

自从我在2009年写回来之后,登录屏幕安全连接但登录后退回到HTTP的做法几乎消失了.

在整个范围内使用HTTPS的开销不再是一个大问题.谷歌率先推出的新SPDY协议(现已演变为HTTP/2)支持跨浏览器和主要Web服务器,并提高了HTTPS速度.

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

谷歌最近甚至表示,仅限HTTPS的网站将开始受益于搜索引擎排名.


因此,像stackoverflow这样的Web应用程序在登录时具有tsl/ssl,而其他所有内容都是http.密码不能被盗,但其他人可以通过获取cookie来获取会话.这怎么可能安全?它甚至比密码更好,会话就是我们想要保护的
您是否有链接解释OpenID(或其他网站)如何设法将您迁移回HTTP但保持会话安全性?这是我无法理解的:使用https进行登录,然后在许多网站上安装不安全的cookie和http会话......
这是一个问题,你准备妥协多少以及你正在处理的事情有多重要.如果您允许人们讨论猫照片,您可能会认为不保证HTTPS.维护没有HTTPS的会话的站点能够采取措施防止会话高举者能够执行某些具有高影响力的操作,例如更改他们(或其他人的)密码或电子邮件地址而无需重新确认其密码(通过HTTPS,理想情况下) .
最需要保护的是登录凭据:您提供的任何登录凭据(用户名/密码或证书).使用OpenID,这些是通过HTTPS在您自己和OpenID提供程序之间发送的.OpenID直接与客户端站点通信,无需发送任何内容

2> tylerl..:

从安全角度来看,您永远不应该信任通过非安全连接发送的任何内容.因此,考虑到这一点,只有当盗窃或滥用该cookie的成本大约为零时,才能安全地使用通过未加密连接发送的cookie.

考虑到这一点,大多数站点的设计使得数据不允许在通道之间"泄漏".毕竟,来自加密端的数据通常是特权的,因此不应该在正常信道中被允许,而来自未加密信道的数据可能是欺骗性的,并且不应该被信任.

如果您的数据不符合这些概括,那么请随意使用它.



3> Pankrat..:

通过HTTP传输会话cookie一直困扰着我.我认为您所描述的技术是保护cookie的唯一理智方式,同时使登录用户可以像登录一样浏览HTTP页面.但是,我很少看到这个实现.

为什么网站不使用这种设置并拥有安全的cookie?

我认为缺乏采用的主要原因是风险管理:

通过窃听窃取会话令牌比例如跨站点脚本(假设存在漏洞)要困难得多.您需要访问网络(例如用户的LAN或ISP).因此,根据基于风险的优先级划分,开发人员应首先解决XSS问题,因为它提供了更大的攻击面(攻击的可能性要高得多).

CSRF和UI纠正(也就是点击顶升)也是如此.

如果被黑客入侵的会话的业务影响很大(例如存储信用卡以供以后在网上商店使用),您可能最好将整个网站限制为HTTPS.

另一个原因可能是可用性问题:使用您提出的方案,您可以有效地为单个用户管理两个并发会话.只要登录标志是存储在不安全会话中的唯一状态,这就很容易了.如果您还可以在两个会话中更改语言和国家/地区等设置,则可能会变得混乱(实现或使用).

有没有更好的方法来实现同样的目标?

来自Web应用程序黑客手册:

如果使用HTTP cookie来传输令牌,则应标记这些令牌secure以防止用户的浏览器通过HTTP传输它们.如果可行,应该为应用程序的每个页面使用HTTPS,包括静态内容,如帮助页面,图像等.

说真的,让整个网站使用HTTPS.几年前,这可能不太可行,主要是因为CDN不提供HTTPS支持.但是,今天主要是平衡开发和运营成本的问题.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有