2009-06-16 11 views
3

J'essaie de comprendre comment je peux détecter si les personnes se connectant à mon site sont derrière un proxy ou non. J'ai lu que vous pouvez détecter la véritable adresse IP d'une personne grâce à des objets intégrables (Flash et Java). Cependant, je n'ai pas été en mesure de trouver des exemples ou des sources pour cela. J'utilise PHP et j'ai lu que la recherche de $_SERVER['HTTP_X_FORWARDED_FOR'], $_SERVER['HTTP_CLIENT_IP'], etc. permettrait de détecter la plupart des proxies, mais jusqu'à présent, je n'ai pas été en mesure de tester avec TOR (peut-être TOR ne les signale pas, mais je ai lu que les procurations anonymes montrent toujours HTTP_X_FORWARDED). Je voudrais essayer de le faire avec une servlet Java, si possible. Quelqu'un pourrait-il me pointer dans la bonne direction (de préférence avec des exemples?) J'ai vu du code sur ha.ckers.org mais ils ont seulement montré le côté client et non le côté serveur.Détection si un utilisateur est derrière un proxy

+0

Si je pouvais demander: pourquoi voulez-vous détecter les utilisateurs proxy? En dehors de quelques différences possibles dans leur utilisation de la connexion (une empreinte réseau, si vous voulez), cela n'aura vraiment aucune importance. – benc

Répondre

5

TOR ne fournit aucun en-tête de serveur tel que X_FORWARDED_FOR, il est donc préférable d'utiliser une liste de tous les nœuds de sortie connus. Une liste peut être trouvée au https://torstat.xenobite.eu/.

Pour les autres proxies, vous pouvez consulter les en-têtes de serveur. têtes de serveur possibles d'intérêt:

HTTP_VIA 
HTTP_X_FORWARDED_FOR 
HTTP_FORWARDED_FOR 
HTTP_X_FORWARDED 
HTTP_FORWARDED 
HTTP_CLIENT_IP 
HTTP_FORWARDED_FOR_IP 
VIA 
X_FORWARDED_FOR 
FORWARDED_FOR 
X_FORWARDED FORWARDED 
CLIENT_IP 
FORWARDED_FOR_IP 
HTTP_PROXY_CONNECTION 

En PHP, vous pouvez obtenir la valeur de ces champs dans la $_SERVER[] superglobal.

+0

Ah, d'accord. Merci pour cette liste et d'autres informations. – ravun

1

Si c'est une option, vous pouvez essayer d'utiliser https. L'IP de l'utilisateur devrait alors être visible pour vous. Cependant, ne sais pas sur les utilisateurs de bureau derrière les proxies SSL.

1

Les applets Java ou Flash ne sont pas supposés divulguer l'adresse IP du client. Je sais que les anciennes versions de Flash avaient un défaut de sécurité qui a rendu cela possible. Très probablement cela est corrigé par maintenant.

Je n'ai jamais utilisé TOR mais d'après ce que j'ai lu il semble être implémenté comme une sorte de VPN et donc le navigateur n'en sera pas du tout conscient. Pourquoi avez-vous besoin de savoir si l'utilisateur est derrière un proxy?

Pourquoi avez-vous besoin de savoir si l'utilisateur est derrière un proxy?

+0

Oh, j'avais remarqué que le problème avec Flash avait été changé après Flash 9.0 alors vous avez raison. Je veux empêcher les gens d'utiliser des proxies sur un jeu que j'ai fait alors quand j'interdis les spammeurs, ils ne peuvent pas créer de nouveaux comptes avec un proxy. Je sais que ce ne serait pas une preuve infaillible, mais je voudrais juste rendre un peu plus difficile. – ravun

2

En recherchant les champs d'en-tête suivants, vous devriez avoir quelques proxys. Comme pour bloquer TOR, il est préférable de bloquer les nœuds de sortie TOR avec iptables.

Et si vous devez vraiment être sûr que vous pouvez essayer des choses "semi-malveillantes" comme l'intégration de Flash ou Java dans votre page qui vous renvoie l'IP du client réel. Mais cela n'a qu'une portée limitée, car vous pourriez simplement obtenir l'adresse IP locale s'il se trouve par exemple. un LAN vous donne quelque chose comme 192.168.1.x

+0

J'ai entendu parler de ces en-têtes, mais essayer d'y accéder depuis le superglobal $ _SERVER en PHP ne semble pas aider. Je n'ai pas encore vu ces indices dans la superglobale $ _SERVER, mais j'ai seulement utilisé TOR, alors peut-être que c'est différent. Pour autant que je sache, TOR est un proxy anonyme et devrait toujours signaler X_FORWARDED_FOR, mais rien n'a été détecté. – ravun

+1

Oh génial. La même réponse exacte avec mes en-têtes répliqués avec un HTTP_ ajouté est acceptée une mine obtient un vote vers le bas ?? – jitter

Questions connexes