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
Répondre
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
.
Ah, d'accord. Merci pour cette liste et d'autres informations. – ravun
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.
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?
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
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
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
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
- 1. Déterminez si l'URL de référence est derrière un proxy
- 2. WebDAV derrière un proxy inverse
- 3. Difficulté avec BugzScout.net de derrière un proxy
- 4. Détection si un HttpModule est chargé
- 5. Webservice WCF derrière un proxy inverse public
- 6. Comment changer le BaseUrl sur un Hudson derrière un proxy?
- 7. Comment utiliser un VCS derrière un proxy HTTP?
- 8. Comment vérifier si IP est un proxy public
- 9. Détection si un processus est toujours en cours
- 10. Détection si un fichier est déjà ouvert en javascript/hta
- 11. Emacs derrière le proxy HTTP
- 12. Est-il possible de suivre un utilisateur qui utilise un site Web proxy?
- 13. Comment vérifier si un utilisateur est toujours actif?
- 14. ejabberd: existe-t-il un moyen de déterminer si un utilisateur est un administrateur?
- 15. créer un site proxy
- 16. Modifier le lien sur un sitemap basé sur si un utilisateur est connecté?
- 17. Zend Studio SVN - comment savoir si un fichier est verrouillé par un autre utilisateur?
- 18. Déterminer si l'utilisateur actuel est un domaine ou un utilisateur local?
- 19. Détection si une chaîne particulière est actuellement visible sur TextField()
- 20. Échec des tests unitaires de service Web derrière un proxy dans Eclipse
- 21. TortoiseSVN via un script proxy
- 22. XMLDocument.Load (url) via un proxy
- 23. Quelle est la quantité de calculs derrière un appel HttpContext.Current?
- 24. Comment utiliser mozilla Rhino derrière un pare-feu? Normalement
- 25. cURL: https via un proxy
- 26. HttpWebRequest un proxy et un non
- 27. Déboguer un serveur SMTP avec un proxy
- 28. Comment détecter si un utilisateur exécute IE 6?
- 29. Comment trouver si un utilisateur Windows appartient au groupe spécifié?
- 30. C#: Obtention de l'image derrière un contrôle
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