【发布时间】:2010-05-29 14:22:55
【问题描述】:
我很确定我记得读过——但再也找不到链接了——关于这个:在某些 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
尽管是 同一个用户,但网络服务器会看到 GET 和 POST 的不同 IP。
肯定看到 HTTP 是一种无状态协议,这是完全合法的吧?
我想找回关于某些 ISP 如何/为何配置其网络以致发生这种情况的解释。
我之所以问,是因为有人要求我实现以下 IP 过滤器,我很确定它从根本上是损坏的代码(对至少一个主要的美国 ISP 用户造成破坏)。
这是一个 Java servlet 过滤器,它可以防止某些攻击。理由是:
“对于任何会话过滤器,都会检查请求中的 IP 地址是否与创建会话时使用的 IP 地址相同。因此在这种情况下,会话 ID 不会被窃取以形成虚假会话。”
http://www.servletsuite.com/servlets/protectsessionsflt.htm
但是我很确定这本质上是有问题的,因为在某些 ISP 上,您可能会看到来自不同 IP 的 GET 和 POST。
【问题讨论】:
-
有趣,我想知道这个。