要求がプロキシから来ている場合はどのように伝えるには?
-
22-08-2019 - |
質問
これは、着信要求がプロキシサーバーを介して行われているかどうかを検出することは可能ですか? Webアプリケーションは、IPアドレスを経由してユーザーを「禁止」した場合、彼らはプロキシサーバーを使用してこれを迂回することができます。つまり、これらの要求をブロックするだけの理由の1つです。これはどのように達成することができますか?
解決
私見であり、これを達成するために何が100%確実な方法だんが、次のヘッダーのいずれかの存在は、要求がプロキシサーバーからルーティングされたことが強く示唆されます:
via:
forwarded:
x-forwarded-for:
client-ip:
また、クライアントのドメイン名にのプロキシまたはのPXY のためになります。
他のヒント
プロキシサーバがセットアップがプロキシサーバの検出を防ぐため、適切であれば、あなたが言うことができなくなります。
ほとんどのプロキシサーバの電源ヘッダを他の人が言及として、しかしそれらは、プロキシは完全にユーザーを隠すためのものに存在しません。
あなたは、このような状況を検出するためにこのようなクッキー、プロキシヘッダ検出、そしておそらくIPヒューリスティックなど、いくつかの検出方法を採用する必要があります。チェックアウト http://www.osix.net/modules/article/?id=765このような状況のいくつかの情報のためを。また、プロキシのブラックリストを使用することを検討して - 。彼らは多くの組織によって公開されている。
しかし、何も100%一定ではありません。あなたは最も簡単な状況を回避するために、上記の戦術を採用することができますが、一日の終わりに、それは、TCP / IPのトランザクションを構成する一連のパケットは単にだし、TCP / IPプロトコルは、セキュリティ、認証などの今日のアイデアで開発されていませんでしたます。
多くの企業は、様々な理由のために全社プロキシを展開することを忘れないでください、あなたは単にあなたが必ずしもあなたの聴衆を制限する一般的なルールとして、プロキシをブロックした場合、それは必ずしも望ましくないかもしれません。しかし、これらのプロキシは、通常、適切なヘッダと自分自身を発表 - 。あなたは自分自身を隠すに優れている正当なユーザーではなく、ユーザーをブロックしてしまうことがあります。
-Adam
この上の掘りのビットをしました。
このから葉を取ります私が働いているようだ次のことを、やっているのhtaccessのアイデア。私はHTTP_X_APPENGINE_COUNTRY ServerVariableを注入AppSpotための特定のルールを追加します。
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
あなたはリクエストオブジェクトでこれらのヘッダを調べて、要求がプロキシ経由であるかどうかを決定することができます/いない
1)を介して 2)X-転送先について
これはこれらのプロキシサーバーは、ヘッダーの上に追加することを選択したかどうかに依存して、100%必ずショットのトリックではないことに注意してください。