从数据包中检索的远程IP地址的准确性

时间:2012-12-06 16:42:07

标签: web http-headers ip packet

如果可以从我的Apache2服务器接收的数据包中检索远程IP(也许是通过自定义插件),它是否总能保证准确?或者这个值是否像引用者标题一样易于欺骗?

我的预期用例是对未经身份验证的API调用进行速率限制。

3 个答案:

答案 0 :(得分:1)

不可靠。不仅因为它可以被欺骗,还因为网络元素可以使您的服务器看到不同的IP地址。

例如,公司通过代理访问Internet非常典型。根据配置,从服务器的角度来看,所有不同的用户都来自同一个IP地址。

在任何情况下都是可以在许多场景中使用的过滤器。例如,当您从同一IP地址检测到太多登录请求时显示验证码。

答案 1 :(得分:1)

如果是TCP数据包,那么发送主机就准确无误了。除非您控制所涉及的路由器,否则不能欺骗TCP数据包中的IP。使用欺骗性源数据包,只有初始SYN数据包将返回,然后来自服务器的SYN + ACK响应将转到欺骗地址,而不是伪造来自的地方 - 例如除非您可以控制目标计算机的数据包路由,否则无法进行完全三次握手。

另一方面,UDP数据包可以简单地伪造,你不能相信它们。

同样,即使像代理服务器和NAT网关这样简单的事情也可以掩盖数据包发起的“真实”IP。你会获得一个IP,但它将是网关/代理的IP,而不是原始机器。

答案 2 :(得分:1)

如果您打算对无效的API调用进行速率限制,则可能需要考虑使用spamhaus之类的服务。他们列出了可能是机器人和探测器的IP。还有其他公司和名单。但如果你的目的是要识别那个坏人'源IP不太可能是正确的。