Skip to content
Menu
Leesweb
Leesweb

Cum să obțineți adresa IP a clientului folosind Java

Posted on ianuarie 31, 2022 by admin

în tutorialul următor Vă vom arăta cum puteți obține adresa IP a clientului folosind specificația servlet. Discutăm ce puteți face dacă clientul dvs. se află în spatele unui proxy sau gateway. Vă explicăm de ce această adresă IP nu este întotdeauna sigură de utilizat.

adresa IP a clientului

în java puteți accesa adresa IP a Clientului prin servletul request.getRemoteAddr().

String ipAddress = request.getRemoteAddr();

dar acest răspuns este departe de a fi complet și este destul de complicat.

proxy-uri, Gateway-uri … fiabile, sigure?

dacă aplicația dvs. rulează pe un server web care se află în spatele unui proxy invers sau al unui Balancer de încărcare, atunci acel proxy poate fi configurat pentru a injecta adresa IP solicitată într-un antet de solicitare. Diferite proxy-uri inverse pot injecta anteturi diferite. Consultați documentația pentru serverul proxy. Am enumerat câteva dintre cele mai utilizate în exemplul nostru de mai jos, dar aceasta nu este în niciun caz o listă completă.

  • când clientul dvs. utilizează un proxy (forward), atunci s-ar putea insera anteturi pentru a spune ce este adresa IP a clientului. Sau s-ar putea să nu fie. Și adresa IP introdusă aici ar putea fi incorectă.
  • aceasta înseamnă că valoarea pe care o obțineți apelând request.getRemoteAddr() este adresa IP a sursei imediate din amonte a solicitării.
  • după cum am spus, Există multe anteturi pentru diferite proxy-uri utilizate, dar x-forwareded-for este cel mai probabil să fie inserat de un proxy.

ca o ultimă notă, chiar dacă obțineți o adresă IP fie din antet, fie din request.getRemoteAddr() nu este garantat să fie adresa IP a clientului. de exemplu: dacă proxy-ul dvs. nu include adresa IP a clientului, atunci veți obține adresa IP a proxy-ului sau a balancerului de încărcare. Dacă clientul dvs. funcționează într-o rețea privată și se conectează la internet printr-un gateway NAT, atunci adresa IP din solicitarea HTTP va fi o adresă a serverului nat. Sau chiar și pentru un hacker este destul de ușor să injectați un antet cu o altă adresă IP. Deci, aceasta înseamnă că nu puteți afla în mod fiabil adresa IP a sistemului de la care a provenit solicitarea.

obțineți adresa IP a clientului

avertisment: aveți grijă dacă implementați securitatea, deoarece toate aceste anteturi sunt ușor de falsificat.
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();}

Lasă un răspuns Anulează răspunsul

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Articole recente

  • blogul unic
  • cum câștigi monede pe remiză ceva?
  • cum să aruncați un platou: stângaci și dreptaci
  • Cum de a stimula nivelul de leptina
  • Cum de a exporta contacte Hotmail?
  • Cod bonus bet365: introduceți codul de înscriere TMG50 pentru decembrie 2021
  • Cum se instalează certificatul SSL pe Centos 7
  • cum să călăfătui o chiuveta de bucatarie din otel inoxidabil (un mod eficient)

Arhive

  • martie 2022
  • februarie 2022
  • ianuarie 2022
  • decembrie 2021
  • noiembrie 2021

Meta

  • Autentificare
  • Flux intrări
  • Flux comentarii
  • 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