2017-10-22 5 views
0

Ich mache ein Test-Tool, um einen Webserver zu testen. Das Tool kann eine einfache HTTP-Anfrage erstellen und an den Server senden. Aber jede Anfrage sollte eine andere src IP Adresse haben.Wie IP-Adresse in http Anfrage in Go/Java zu ändern

Meine Frage ist. Gibt es eine Möglichkeit, wie ich ein IP-Paket von einer HTTP-Anfrage erstellen, die IP-Adresse ändern und direkt ins Netz senden kann?

Ich benutze Java oder gehe (neu zu gehen). Danke vielmals! :)

+0

Es ist wahrscheinlich zu viel Mühe, IP-Adressen zu fälschen. Können Sie sich direkt in den Server einklinken und Request-Objekte erstellen (mit welcher Adresse auch immer)? –

Antwort

0

IP-Adressen werden auf einer niedrigeren Ebene als HTTP behandelt - speziell durch das TCP/IP-Protokoll. Can I trust the source IP of an HTTP request? bietet einen guten Überblick darüber, warum die IP, die Sie von einem HTTP-Client erhalten, vertrauenswürdig (und schwer zu parodieren) ist.

Das gesagt, die HTTP-Header unterstützen die Idee "vorschlagen" die IP-Adresse von TCP erhalten ist nicht korrekt - am häufigsten ist dies die X-Forwarded-For Header. Angenommen, Ihr Server stützt sich auf diesen Wert (was es sollte wohl nicht!), Können Sie Ihre IP ganz leicht fälschen kann:

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

Natürlich, die meisten Server nicht auf diesem Gebiet verlassen, da das Potenzial für Missbrauch ist groß.

Wenn Sie ein Testwerkzeug für Ihren eigenen Server schreiben, ist der beste Weg, Ihrem Server eine Logik hinzuzufügen, die nach der Existenz des Headers X-Forwarded-For (oder etwas Ähnlichem) sucht und die IP-Adresse überschreibt, falls diese gesetzt ist . Stellen Sie jedoch sicher, dass Sie diese Funktion in der Produktion deaktivieren.