9
votes

Trouver une adresse IP du client connecté via un proxy

Y a-t-il un moyen de collecter l'adresse IP d'un client connecté à votre site Web via un serveur proxy?

La configuration complète est un réseau local interne et via Sysadmin, j'ai également le contrôle de la machine de proxy. J'utilise PHP5 pour le côté serveur de site Web.

J'ai essayé $ _ Server ['Remote_addr'] dans PHP mais cette variable stocke simplement l'adresse IP du proxy.

Des idées?


0 commentaires

4 Réponses :


12
votes

Cela dépend du proxy. Certains procurations ajoutent une en-tête qui donne l'adresse IP originale, l'en-tête X-Forwarded-pour-en-tête, mais étant donné que la plupart des entreprises utilisent des procurations pour masquer la structure de réseau interne rare. Si tel est le cas, vous n'allez pas pouvoir le faire facilement.

Si vous avez le contrôle sur le proxy, il est temps de lire la documentation du proxy pour savoir comment ajouter cet en-tête.


1 commentaires

PHP analyse-t-il l'en-tête XFF dans une variable de serveur?



1
votes

X-transmis-for est le seul moyen d'obtenir l'adresse IP du client. Vérifiez s'il y a un moyen de permettre cela dans votre proxy.

Sur certains proxy, il vous donne une option comment gérer l'en-tête XFF existant (lorsque la demande passe dans plusieurs proxies). Voici ce que vous devez considérer,

  1. Si l'adresse du client est à des fins de sécurité / de la confiance (telles que la limitation de l'ACL ou la limitation du taux), l'en-tête XFF existant doit être supprimé par proxy.
  2. Si l'adresse est réservée aux informations (journalisation, débogage), vous devez ajouter l'adresse de pair à XFF existant, séparé par virgule. La première adresse IP de la liste serait l'adresse IP du client.

0 commentaires

14
votes

La solution standard (en PHP) est la suivante: xxx

mais comme la première réponse indique que tout dépend de l'en-tête en cours de réglage.


1 commentaires

En réalité, cela ne fonctionne pas: au lieu de "http_x_forward_for", il est "http_x_forwarded_for"



-2
votes

Ce code peut être utilisé pour obtenir l'adresse IP du client qui se connecte via un proxy. xxx

mais il ne détecte que lorsque le proxy est transparent.

ci-dessous est le Informations sur le proxy HTTP:

  1. n'utilise aucun serveur proxy:

    • demande.getremOteaddr () = adresse IP du client
    • demande.getheader ("http_x_forwarded_for") = aucune valeur ou pas d'affichage
    • Utilisez des proxy transparents:

      • http_x_forwarded_for = adresse IP réelle du client
      • Utilisez des proxies anonymes normales:

        • request.getremoeaddr () = adresse IP du serveur proxy
        • http_x_forwarded_for = adresse IP du serveur proxy

1 commentaires

Ummm .. c'est Java. Question est marquée comme php.