首页 > 解决方案 > 使用未加密的纯 HTTP 时防止会话劫持

问题描述

据我了解,如果用户使用没有 TLS 加密层的纯 HTTP,那么任何“在线”监听的人都可以看到用户的会话 cookie 并窃取它。那么这是否意味着如果网站没有实现 HTTP over TLS,就不可能防范会话劫持?是不是意味着https之前的所有网站都无法防范会话劫持?

场景可能看起来像这样。

1.好人登录他们的帐户

GET / HTTP/1.1
Host: onlinecommunity.com
Cookie: PHPSESSID=f5avra_=AKMEHO_ga=GA1.2.93f54422f2ac010

2. 一个“在线”监听的坏人看到了普通的 HTTP 请求

3. 坏人发送同样的请求

GET / HTTP/1.1
Host: onlinecommunity.com
Cookie: PHPSESSID=f5avra_=AKMEHO_ga=GA1.2.93f54422f2ac010

4. 现在坏人看到好人的资料了!

在 HTTPS 之前,人们是如何防止 SESSION 劫持的?

标签: httpsecuritysessioncookieshttps

解决方案


我想我找到了(部分)我自己问题的答案,所以我会在这里分享给其他人。

  1. 如果网站不使用加密,那么您可以使用 VPN 对请求进行加密,这样会话 cookie 将被隐藏(加密)
  2. 您可以为每个请求重新创建会话 cookie。尽管从我读到的内容来看,这可能很难实现。
  3. 您可以检查其他标头字段并将它们与上一个请求进行比较。如果它们太不同,那么您可以阻止访问。
  4. 您可以检查 IP 地址。但由于此人可能在移动网络上,IP 可能会因正当理由而更改,因此您至少可以检查 IP 范围以确保它来自与上次请求相同的国家/地区。

我想一般来说,如果网站使用没有加密的纯文本 HTTP,你也可以通过在线监听来窃取他们的用户名和密码。因此,您至少应该使用 VPN(VPN 加密所有数据)。我猜 - 永远不要对任何敏感信息使用纯文本 HTTP 请求。

随意添加或更正我。


推荐阅读