为什么我应该允许一个网站上的多个 IP 地址用于单个会话?

yor*_*oru 19 security

我希望我的问题符合本网站的范围。

我正在开发一个CMS。目前,我的登录用户在会话中被锁定到他们的 IP 地址。不幸的是,我的用户群中的一小部分经常在两个或多个 IP 地址之间跳转。他们中的大多数人可能使用负载平衡器。从技术上讲,没有必要将用户会话锁定到一个 IP 地址。我没想到客户会为我网站上的单个页面请求在多个 IP 地址之间切换。

我现在想知道,允许我的客户端不断地在 IP 地址之间跳转以获取页面请求的风险是什么(例如,xxx.xxx.xxx.xxx 请求 CSS 文件,yyy.yyy.yyy 请求 JavaScript 文件。 yy)?我通常应该允许还是禁止?

HBr*_*ijn 36

我的一小部分用户群经常在两个或多个 IP 地址之间跳转。

原因

假设您的用户没有积极尝试使用匿名服务来隐藏他们的真实 IP 地址……:

我见过的大多数公司示例都是由大公司和一些 ISP 使用代理服务器集群引起的,每个代理服务器都有不同的外部 IP 地址,用户请求在该集群上获得负载平衡。

您可能会看到双栈用户通过 IPv4 和 IPv6 发出请求,并在两种协议RFC 8305之间切换以进行后续请求。

另一种情况是当我处于 Wi-Fi 接入点的极端范围并且我的设备“随机”在 Wi-Fi 和蜂窝数据之间切换时。

解决方案

在第一种情况下,您可能会通过仅考虑前三个八位字节来在会话中保持此类 IP 地址的“安全性”,因为通常这样的代理服务器集群都在一个小的子网内,并且具有相邻的 IP 地址。

在第二个和第三个场景中,您将看到完全不同的客户端 IP 地址,甚至来自不相关的提供商。

不要将您的会话绑定到特定的 IP 地址,这更有可能破坏用户体验,而不是提供实际改进的安全性。

  • 永远不要将会话绑定到 IP 地址,80 年代已经结束!我的 ISP 为我的 * 手机 * 提供了一个完整的 /64 网络,我的浏览器在其中疯狂地跳来跳去。 (34认同)
  • 正是出于这些原因,没有人再将会话绑定到 IP 地址。 (28认同)
  • 除此之外,多路径 TCP 变得越来越普遍。 (6认同)
  • @bjoster 那是因为 IPv6 隐私扩展,它会不断切换地址,因此网站无法仅通过您的 ip 跟踪您(这不是 IPv4 的问题,因为同一地址后面有多个人) (6认同)
  • 如果您是为技术用户制作 CMS,您可以在登录页面上勾选“仅将此会话限制为您的 ip (xxx.yyy.zzz.iii)”复选框 (3认同)

小智 9

我现在想知道,允许我的客户端不断地在 IP 地址之间跳转以获取页面请求的风险是什么(例如,xxx.xxx.xxx.xxx 请求 CSS 文件,yyy.yyy.yyy 请求 JavaScript 文件。 yy)?我通常应该允许还是禁止?

主要风险是恶意用户劫持会话。如果您可以锁定一个或一小组 IP 地址,您就可以阻止来自完全不同 IP 地址的用户劫持会话。

问题是一些用户合法地这样做。无论他们是使用负载平衡代理还是处于两个无线接入点(或其他)的边缘,他们都使用多个 IP 地址。所以你几乎必须允许这些用户使用它。并且很难判断哪些用户需要多个 IP 地址,除非他们从多个 IP 地址请求。

减少这种影响的一种方法是使用 HTTPS。然后恶意行为者必须有办法破坏安全层以及会话 cookie。通过不安全的连接,恶意行为者可以使用网络检查来破坏会话 cookie。但是通过 HTTPS,同一个恶意行为者需要访问对话的一端。如果恶意行为者拥有它,那么就没有必要使用不同的 IP。

TL;DR:您通常应该允许来自同一用户的不同 IP 地址的请求。发生这种情况是有正当理由的。改用 HTTPS 来防止此类攻击。