我注意到某些网站(例如gmail)允许用户通过https进行身份验证,然后使用非安全Cookie切换到http,以便主要使用该网站。
如何对会话进行http访问,但这仍然是安全的?或者它是不安全的,因此这就是为什么gmail提供了使用https保护整个会话的选项?
请举例说明其工作原理并避免会话劫持攻击,同时仍允许通过http访问经过身份验证的内容。我希望能够实现这样一个方案,如果它是安全的,以避免出于性能原因而必须将整个站点作为https。
答案 0 :(得分:2)
只有密码不以明文形式传输才能安全。可以(并且已经完成)以HTTP模式拦截和滥用GMail会话cookie。
为避免会话劫持,您需要保持HTTPS模式(我认为GMail现在提供)。
答案 1 :(得分:2)
正如Thilo所说,但我会进一步解释一下:)
网络服务器是无国籍的!这确实是身份验证案例的问题。您不能只登录,然后说“从现在开始,此用户已登录” - 您需要某种方式来识别这次请求新网站的用户。
执行此操作的常用方法是实施会话。如果您在登录时对网络流量进行数据包嗅探,然后浏览网站,您通常会注意到以下情况:
登录:您将用户名和密码发送到服务器。完全没有加密! (SSL / HTTPS将为您加密此请求以避免中间人攻击)
响应:您将收到一个随机生成的许多奇怪字符的字符串。这些通常会存储在cookie中。
只有您有权访问某个站点的请求:您将随机生成的字符串传输到服务器。服务器将查看此字符串,并看到它与您的会话相关联。这允许服务器识别您的身份,并授予您访问您网站的权限。
..现在,HTTP本身并不安全。这意味着您的密码和会话cookie(随机生成的字符串)将完全未加密传输。如果有人可以访问您的流量(通过特洛伊木马,路由器劫持,等等),他将能够在您登录时看到您的用户名/密码,如果您没有使用HTTPS。这将授予他访问您网站的权限,直到您更改密码(除非他先更改密码:P)。在其余的请求中,他将能够获取会话cookie,这意味着他可以在该cookie生命周期的剩余时间内窃取您的身份(“直到您退出,或者会话在服务器上到期)。
如果您想要安全,请使用HTTPS。但实际上,将键盘记录器社交工程设计到计算机比阅读所有流量要容易得多:)
(或正如其他人所指出的那样,使用跨站点脚本来读取你的会话cookie)
答案 2 :(得分:1)
这比普通HTTP更安全一点 - 登录名/密码不会通过明文传输。除此之外,它的工作方式与普通的基于HTTP cookie的会话完全相同(因为它就是这样);因此,所有会话劫持问题都适用。
答案 3 :(得分:1)
这不可能也不安全。这就是我们获得“安全cookie”的原因。虽然它可以抵御被动嗅探攻击,但是不会暴露用户名/密码,但是仍然可以进行会话劫持。
另请查看此SSL Implementation Security FAQ文件。