http - 使用未加密的纯 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 劫持的?
解决方案
我想我找到了(部分)我自己问题的答案,所以我会在这里分享给其他人。
- 如果网站不使用加密,那么您可以使用 VPN 对请求进行加密,这样会话 cookie 将被隐藏(加密)
- 您可以为每个请求重新创建会话 cookie。尽管从我读到的内容来看,这可能很难实现。
- 您可以检查其他标头字段并将它们与上一个请求进行比较。如果它们太不同,那么您可以阻止访问。
- 您可以检查 IP 地址。但由于此人可能在移动网络上,IP 可能会因正当理由而更改,因此您至少可以检查 IP 范围以确保它来自与上次请求相同的国家/地区。
我想一般来说,如果网站使用没有加密的纯文本 HTTP,你也可以通过在线监听来窃取他们的用户名和密码。因此,您至少应该使用 VPN(VPN 加密所有数据)。我猜 - 永远不要对任何敏感信息使用纯文本 HTTP 请求。
随意添加或更正我。
推荐阅读
- python - 如何在单个 for 循环中遍历两个字符串列表?
- avro - 没有名称的 Avro Schema 数组
- r - 绘制给定值集的 cox 函数/曲线(案例队列数据,cch)
- javascript - React - 与内容无关的通用组件
- html - 如果您的浏览器无法读取 css,该怎么办
- python - AttributeError:“SMOTE”对象没有属性“fit_sample”
- linux - Laravel Homestead 在 Linux (Ubuntu 20.04.2 LTS) 上运行缓慢
- angular - Angular - 尝试模拟 router.events 时出错
- reactjs - “未知”类型的参数不能分配给“字符串”类型的参数,使用 array.includes()
- python - 不确定如何将字符串转换为可用的不和谐数据