Est-il possible de détecter si une demande entrante est effectuée via un serveur proxy? Si une application Web "interdit" les utilisateurs via l'adresse IP, ils peuvent contourner ce problème en utilisant un serveur proxy. C'est juste une raison pour bloquer ces demandes. Comment cela peut il etre accompli?Comment savoir si une demande provient d'un proxy?
Répondre
à mon humble avis, il n'y a aucun moyen fiable à 100% pour y parvenir, mais la présence de l'une des têtes suivantes est une forte indication que la demande a été acheminée à partir d'un serveur proxy:
via:
forwarded:
x-forwarded-for:
client-ip:
Vous pouvez aussi chercher la proxy ou pxy dans le nom de domaine client.
Vous pouvez rechercher ces en-têtes dans la demande objet et, par conséquent décider si la demande se fait par un proxy/non
1) Via 2) X-Forwarded-For
Notez que ce n'est pas un L'astuce de coup sûr à 100% dépend de la décision de ces serveurs proxy d'ajouter des en-têtes au-dessus.
Si un serveur proxy est configuré correctement pour éviter la détection de serveurs proxy, vous ne serez pas en mesure de le savoir.
La plupart des serveurs proxy fournissent des en-têtes comme d'autres le mentionnent, mais ceux-ci ne sont pas présents sur les proxies destinés à masquer complètement l'utilisateur.
Vous devrez utiliser plusieurs méthodes de détection, telles que les cookies, la détection d'en-tête de proxy, et peut-être l'heuristique IP pour détecter de telles situations. Consultez http://www.osix.net/modules/article/?id=765 pour obtenir des informations sur cette situation. Envisagez également d'utiliser une liste noire de proxy - ils sont publiés par de nombreuses organisations.
Cependant, rien n'est certain à 100%. Vous pouvez utiliser les tactiques ci-dessus pour éviter la plupart des situations simples, mais en fin de compte c'est une série de paquets formant une transaction TCP/IP, et le protocole TCP/IP n'a pas été développé avec les idées de sécurité, d'authentification, etc. Gardez à l'esprit que de nombreuses entreprises déploient des proxies à l'échelle de l'entreprise pour diverses raisons, et si vous bloquez simplement les proxies en règle générale, vous limitez nécessairement votre audience, ce qui n'est pas toujours souhaitable. Cependant, ces proxies s'annoncent généralement avec les en-têtes appropriés - vous risquez de bloquer les utilisateurs légitimes, plutôt que les utilisateurs qui se cachent.
-Adam
fait un peu de creuser sur ce après mon domaine obtenu hébergé sur Google AppSpot.com avec de belles annonces porno hard injectées dans ce (merci Google). Prendre une feuille à partir de cette htaccess idea Je suis en train de faire ce qui suit, qui semble fonctionner. J'ai ajouté une règle spécifique pour AppSpot qui injecte un HTTP_X_APPENGINE_COUNTRY ServerVariable.
Dim varys As New List(Of String)
varys.Add("VIA")
varys.Add("FORWARDED")
varys.Add("USERAGENT_VIA")
varys.Add("X_FORWARDED_FOR")
varys.Add("PROXY_CONNECTION")
varys.Add("XPROXY_CONNECTION")
varys.Add("HTTP_PC_REMOTE_ADDR")
varys.Add("HTTP_CLIENT_IP")
varys.Add("HTTP_X_APPENGINE_COUNTRY")
For Each vary As String In varys
If Not String.IsNullOrEmpty(HttpContext.Current.Request.Headers(vary)) Then HttpContext.Current.Response.Redirect("http://www.your-real-domain.com")
Next