在我正在构建的网站上,我计划记录提交的 IP 地址,以备不时之需。我不介意使用代理,但直接伪造您的 IP 地址会违背目的。
要执行完整的 GET 操作(无论是否收到或是否通过),是否需要合法的 IP 地址?或者网站是否会被来自随机欺骗 IP 地址的帖子充斥?
(POST 有什么不同吗?)
答案1
不。嗯,是的。或者可能。这取决于您从哪里获取“IP 地址”数据,以及您是否信任它们。
如果您从 IP 数据包本身获取地址,那么您可以相信发送数据包的人有权访问发送到该 IP 地址的数据包。这可能意味着它是该 IP 地址的合法用户(在这个僵尸网络、开放代理和 Tor 时代,“合法”一词的值是有限的),或者发送数据包的人有权访问中间系统,并可以看到您发送的数据包。
然而,随着反向代理的广泛普及,IP 数据包经常会歪曲连接的来源,因此引入了各种 HTTP 标头,以允许代理提供“实际”的原始 IP 地址。这里的问题是,您必须相信发送标头的人会提供准确的信息。此外,默认(或误导性的复制粘贴)配置很容易让您受到这些标头的欺骗。因此,您必须确定是否有任何反向代理合法地参与了您的请求,并确保它们(和您的网络服务器)配置正确且安全。
答案2
不。
TCP 连接(HTTP 使用)需要双向通信。虽然您可以SYN
轻松伪造数据包的源 IP,但SYN-ACK
服务器的响应将被路由到您在初始数据包中伪造的 IP - 除非您可以看到服务器的响应,否则您将无法完成连接。
然而,像 Tor 这样的匿名代理工具可以提供一种轻松匿名化连接源的方法——请记住,这可以轻松通过 IP 禁止来击败垃圾邮件控制。
答案3
简短的回答是...今天还不可以。
过去,计算机对 TCP 流量的序列号非常容易预测。这意味着攻击者只会发送合法流量,直到它找出序列号,并能很好地猜测接下来会发生什么。然后它会发送 TCP 流量来模仿伪造的 IP 地址,另一端的主机就会相信。所以你可以伪造三次握手。
今天,我想说 10 多年后……计算机在随机化方面已经做得更好了,所以这很难,甚至不可能。在我看来,攻击者这样做会浪费时间。
答案4
HTTP 运行在 TCP 上。为了使 TCP 正常工作,您需要完整的 3 次 SYN/ACK 握手,然后才能发出 GET 或 POST 请求,因此简单的欺骗源不会起太大作用。其他更高级的欺骗形式 (MitM) 仍然有效。