【问题标题】:How to modify ip address in http request in Go/Java如何在 Go/Java 中修改 http 请求中的 IP 地址
【发布时间】:2018-04-02 20:17:40
【问题描述】:

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

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

我使用 java 或 go (new to go)。非常感谢! :)

【问题讨论】:

  • 欺骗IP地址可能太麻烦了。你能直接连接到服务器并构造请求对象(使用你喜欢的任何地址)吗?

标签: java http go ip pcap


【解决方案1】:

IP 地址的处理级别低于 HTTP - 具体而言,它是由 TCP/IP 协议完成的。 Can I trust the source IP of an HTTP request? 很好地概述了为什么您从 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 地址放。不过,请确保在生产环境中禁用此功能。

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 2012-06-23
    • 2013-03-18
    • 1970-01-01
    • 2010-11-13
    • 2018-07-04
    • 2013-11-08
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多