用户身份验证 - 通过HTTP传递会话cookie的安全风险?

时间:2012-03-20 21:31:50

标签: php http session https session-cookies

我的网站上有一个“客户中心”,只能通过HTTPS访问。我目前正在使用单个会话cookie来跟踪PHP会话变量,例如User_Authenticated,Client_ID等,一旦他们登录。

我想在登录后将导航栏上的链接从“登录”更改为“注销|客户中心”。这很容易,但我的大多数网站都有指向HTTP而不是HTTPS的绝对链接。我可以将所有链接都设置为相对的,这样一旦他们登录就可以将它们保存在HTTPS上,但我的网站是图形密集型的,我不能保证它们会保留在HTTPS上(例如,如果它们登录后在浏览器上输入http://mysite.com

我的问题如下:

1)通过HTTP传递此cookie是否存在风险?我听说它可以被拦截和欺骗。那太糟糕了!

2)我可以使用两个cookie,一个是包含其凭据的secure_only cookie,另一个只是让浏览器知道他们是否已登录,我的导航栏上的链接?是否可以使用不同的cookie同时使用多个会话?

我也听说过使用基于数据库的会话管理系统,但现在这已经超出了我的想象。我是PHP和MySQL的新手(这是我的第一个网站)。

提前致谢!

3 个答案:

答案 0 :(得分:1)

通过http传递身份验证cookie是个坏主意。这就是firesheep暴露出来的问题,以及Google,Facebook和Twitter等公司现在一直鼓励(或要求)https的原因。

如果您担心网站上的sesion劫持,那么您应该为每个需要保护的页面和资产强制执行https。理想情况下,对所有资产强制执行https,以避免在页面上出现关于混合安全性的恼人的borwser警告。

答案 1 :(得分:1)

您可以使用第二个Cookie执行所需操作。然后,您可以将会话cookie用于HTTP和HTTPS页面(以获取登录状态),但仅使用第二个仅HTTPS的cookie进行身份验证。

我写了一篇article,描述了如何分离这两个问题,维护会话和身份验证。这是一件好事,即使你决定在整个网站上使用HTTPS。

我会考虑为整个网站强制执行HTTPS,这会让您的生活更轻松。如果您的网站流量不是很高,那么今天的服务器应该没有问题。

答案 2 :(得分:0)