我很确定我记得读过——但再也找不到链接了——关于这个:在某些 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 上,您可能会看到 GET 和 POST 来自不同的 IP。