代码之家  ›  专栏  ›  技术社区  ›  NoozNooz42

从同一台机器获取和发布请求是否可以来自不同的IP?

  •  4
  • NoozNooz42  · 技术社区  · 14 年前

    我很肯定我记得我读过一本书——但再也找不到链接了——关于这个:在一些ISP(包括美国至少一个大的ISP)上,用户的get和post请求可能来自不同的IP。

    (请注意,这完全与编程有关,下面我将给出一个示例)

    我是 讨论让您的IP地址在两个请求之间动态变化。

    我说的是:

    IP 1:  123.45.67.89
    IP 2:  101.22.33.44
    

    这个 相同的 用户先发一个GET,再发一个POST,再发一个GET,再发一个POST,服务器会看到:

    - GET  from IP 1
    - POST from IP 2
    - GET  from IP 1
    - POST from IP 2
    

    所以尽管这是 相同的 用户,webserver可以看到get和post的不同IP。

    当然看到了HTTP是一个无状态协议,这是完全合法的,对吗?

    我想找到有关某些ISP如何/为什么配置其网络以便发生这种情况的解释。

    我之所以这么问是因为有人让我实现下面的IP过滤器,我很确定它根本上就是破坏了代码(至少破坏了一个主要的美国ISP用户的破坏)。

    这里有一个Java Servlet过滤器,它可以防止某些攻击。理由是:

    对于任何会话筛选器,检查请求中的IP地址是否与创建会话时使用的IP地址相同。因此,在这种情况下,会话ID不能因形成假会话而被盗。”

    http://www.servletsuite.com/servlets/protectsessionsflt.htm

    不过,我很肯定这是内在的破坏,因为有ISP,你可能会看到得到和发帖来自不同的IP。

    2 回复  |  直到 13 年前
        1
  •  5
  •   Martin Eve    14 年前

    一些ISP(或大学网络)操作透明代理,这些代理从网络负载最小的传出节点中继请求。

    也可以在本地机器上配置此项,以使用负载最低的NIC,这可能再次导致这种情况。

    您是正确的,这是一个有效的HTTP状态,虽然它应该发生的相对较少,这就是为什么基于IP的用户验证不是一个适当的身份确定。

        2
  •  1
  •   Richard H    14 年前

    对于Web服务器来说,这意味着最终用户处于某种代理/网关的后面。正如您所说,考虑到HTTP是无状态的,它是完全有效的,但我认为这是不寻常的。据我所知,大多数ISP都会为家庭用户分配一个真正的、非翻译的IP(尽管通常是动态的)。

    当然,对于公司/机构网络,他们可以做任何事情。负载平衡可能意味着请求来自不同的IP,有时请求类型可能会被转移到不同的网关(尽管我有兴趣知道原因,考虑到n_GeT>>n_Post)。