Skip to content
Menu
Leesweb
Leesweb

So erhalten Sie die Client-IP-Adresse mit Java

Posted on Januar 31, 2022 by admin

Im folgenden Tutorial zeigen wir Ihnen, wie Sie die Client-IP-Adresse mithilfe der Servlet-Spezifikation abrufen können. Wir besprechen, was Sie tun können, wenn sich Ihr Client hinter einem Proxy oder Gateway befindet. Wir erklären, warum diese IP-Adresse nicht immer sicher zu verwenden ist.

Client-IP-Adresse

In Java können Sie über Servlets request.getRemoteAddr() auf die Client-IP-Adresse zugreifen.

String ipAddress = request.getRemoteAddr();

Aber diese Antwort ist alles andere als vollständig und ziemlich kompliziert.

Proxies, Gateways … zuverlässig, sicher?

Wenn Ihre Anwendung auf einem Webserver ausgeführt wird, der sich hinter einem Reverse Proxy oder Load Balancer befindet, kann dieser Proxy so konfiguriert werden, dass die angeforderte IP-Adresse in einen Anforderungsheader eingefügt wird. Verschiedene Reverse-Proxys können unterschiedliche Header injizieren. Konsultieren Sie die Dokumentation für Ihren Proxy-Server. Wir haben einige der am häufigsten verwendeten in unserem Beispiel unten aufgeführt, aber dies ist keineswegs eine vollständige Liste.

  • Wenn Ihr Client einen (Weiterleitungs-) Proxy verwendet, werden möglicherweise Header eingefügt, um die IP-Adresse des Clients anzugeben. Oder es könnte nicht. Und die hier eingegebene IP-Adresse ist möglicherweise falsch.
  • Dies bedeutet, dass der Wert, den Sie durch Aufrufen von request.getRemoteAddr() erhalten, die IP-Adresse der unmittelbaren Upstream-Quelle der Anforderung ist.
  • Wie gesagt, es werden viele Header für verschiedene Proxys verwendet, aber x-forwareded-for wird höchstwahrscheinlich von einem Proxy eingefügt.

Als letzte Anmerkung, selbst wenn Sie eine IP-Adresse entweder aus dem Header oder aus request.getRemoteAddr() erhalten, ist nicht garantiert, dass es sich um die Client-IP-Adresse handelt. beispiel: Wenn Ihr Proxy nicht die IP-Adresse des Clients enthält, erhalten Sie die IP-Adresse des Proxys oder des Load Balancers. Wenn Ihr Client in einem privaten Netzwerk arbeitet und über ein NAT-Gateway eine Verbindung zum Internet herstellt, ist die IP-Adresse in der HTTP-Anforderung eine Adresse des NAT-Servers. Oder sogar für einen Hacker ist es ziemlich einfach, einen Header mit einer anderen IP-Adresse zu injizieren. Das bedeutet also, dass Sie die IP-Adresse des Systems, von dem die Anfrage stammt, nicht zuverlässig herausfinden können.

Client-IP-Adresse abrufen

Warnung: Seien Sie vorsichtig, wenn Sie Sicherheit implementieren, da alle diese Header leicht zu fälschen sind.
private static final String IP_HEADER_CANDIDATES = { "X-Forwarded-For", "Proxy-Client-IP", "WL-Proxy-Client-IP", "HTTP_X_FORWARDED_FOR", "HTTP_X_FORWARDED", "HTTP_X_CLUSTER_CLIENT_IP", "HTTP_CLIENT_IP", "HTTP_FORWARDED_FOR", "HTTP_FORWARDED", "HTTP_VIA", "REMOTE_ADDR" };public static String getClientIpAddress(HttpServletRequest request) { for (String header : IP_HEADER_CANDIDATES) { String ip = request.getHeader(header); if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) { return ip; } } return request.getRemoteAddr();}

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Neueste Beiträge

  • Die Blog-Single
  • Wie verdienen Sie Münzen auf Draw Something?
  • Wie man eine Platine wirft: Linkshänder und Rechtshänder
  • So steigern Sie Ihren Leptinspiegel
  • Wie exportiere ich Hotmail-Kontakte?
  • bet365 Bonuscode: Geben Sie den Registrierungscode TMG50 für Dezember ein 2021
  • So installieren Sie ein SSL-Zertifikat auf Centos 7
  • Wie man eine Edelstahl-Küchenspüle abdichtet (effektiver Weg)

Archive

  • März 2022
  • Februar 2022
  • Januar 2022
  • Dezember 2021
  • November 2021

Meta

  • Anmelden
  • Feed der Einträge
  • Kommentare-Feed
  • WordPress.org
  • Deutsch
  • Nederlands
  • Svenska
  • Norsk
  • Dansk
  • Español
  • Français
  • Português
  • Italiano
  • Română
  • Polski
  • Čeština
  • Magyar
  • Suomi
  • 日本語
  • 한국어
©2022 Leesweb | Theme: Wordly by SuperbThemes