php会话劫持 - 足够的HTTPS?指纹识别的建议?

时间:2010-07-15 15:02:30

标签: php security apache https fingerprinting

我使用HTTPS,但希望最大限度地降低某人使用其他人最近实际使用的会话ID制作自己的Cookie的风险。

作为会话变量,我有一个到期时间,所以如果最近没有使用会话,会话就会失效,所以我认为机会窗口是受害者处于活动状态或最近离开网站时没有正确登出。< / p>

我不期望大量的流量,我使用生成会话ID的标准php方法。我相信某人实际上成功(甚至尝试)劫持某人会话的“风险”接近于零。

我想要做的是以某种方式“识别”远程用户,不使用使用$_SERVER['REMOTE_ADDR']。我的想法是攻击者必须同时找到有效的会话ID,以及冒充实际用户的不同属性。

我不想强迫用户使用证书登录。我希望它能够在所有标准的Web浏览器中工作,即使对于我的祖母和其他非技术人员也是如此。

所以,我最初想问的是:是否有可以使用的HTTPS会话的“属性”?它们会有用吗?如果是这样,我该如何找到它们? phpinfo()没有透露任何特定于HTTPS的内容。 (这是因为httpd没有暴露它吗?)

我是否应该使用HTTP_USER_AGENT + HTTP_ACCEPT + HTTP_ACCEPT_LANGUAGE + HTTP_ACCEPT_ENCODING + HTTP_ACCEPT_CHARSET或类似假设为的类似的串联用户之间有足够的

非常高兴所有答案! (但在回答之前请先阅读问题,只能在StackOverflow上推荐其他问题) 谢谢!

2 个答案:

答案 0 :(得分:3)

您需要确保在会话cookie上设置了安全标志和http_only标志。您还需要在用户进行身份验证时更改session_id以避免会话固定问题。

虽然你提出的建议在指纹方面应该是相对安全的,但实际上并不是那么有选择性 - otoh有很多东西不应该用于指纹识别(比如CLIENT_ADDRESS)所以它并不是很容易建议的东西更好。

除了上述建议外,我建议您花时间查看其他潜在的安全问题。

下进行。

答案 1 :(得分:2)

OWASP top 10对这类攻击非常有帮助。 具体而言,你需要担心这三个:

A2: Cross-Site Scripting (XSS)

A3: Broken Authentication and Session Management.

A5: Cross-Site Request Forgery (CSRF)(也称为“会话骑行”)

攻击者几乎知道所有$ _SESSION变量,并且任何值。没有必要检查这些变量,因为攻击者影响它们是微不足道的。一个重要的例外是$_SERVER['remote_addr'],它是直接从apache的TCP套接字中提取的,因此这个值不能被欺骗或以其他方式被篡改。但是,如果攻击者位于同一网段(例如,如果他正在咖啡馆里啜饮一杯咖啡),那么攻击者就会拥有相同的IP地址。