如何在Go/Java中修改http请求中的ip地址

问题描述 投票:0回答:1

我正在做一个测试工具来测试网络服务器。该工具可以构造一个简单的http请求,并发送到服务器。但每个请求应该有不同的src ip addr。

我的问题是。有什么方法可以从http请求构建ip包,修改ip地址,然后直接发送到网络中吗?

我使用java或go(新的go)。非常感谢! :)

java http go ip pcap
1个回答
0
投票

IP 地址的处理级别比 HTTP 低 - 具体来说,它是由 TCP/IP 协议完成的。 我可以信任 HTTP 请求的源 IP 吗? 很好地概述了为什么从 HTTP 客户端获取的 IP 值得信赖(且难以欺骗)。

也就是说,HTTP 标头支持“暗示”从 TCP 获取的 IP 地址不正确的想法 - 最常见的方法是使用 X-Forwarded-For 标头。假设您的服务器依赖于这个值(它可能不应该!),您可以很容易地欺骗您的 IP:

req, err := http.NewRequest("GET", "http://example.com", nil)
// ...
req.Header.Add("X-Forwarded-For", "1.2.3.4")
resp, err := client.Do(req)

当然,大多数服务器不会依赖该字段,因为滥用的可能性很大。

如果您正在为自己的服务器编写测试工具,最好的方法是向服务器添加逻辑,以检查

X-Forwarded-For
标头(或类似内容)是否存在,并覆盖 IP 地址(如果已设置)。不过,请确保在生产中禁用此功能。

© www.soinside.com 2019 - 2024. All rights reserved.