2009-03-27 4 views
6

プロキシサーバー経由で着信要求が行われているかどうかを検出できますか? WebアプリケーションがIPアドレスを介してユーザーを「禁止」した場合、プロキシサーバーを使用してこれを回避できます。これは、これらの要求をブロックする理由の1つに過ぎません。これはどのように達成できますか?要求がプロキシから来ているかどうかを確認するには?

答えて

6

私見では、これを達成するために何が100%信頼できる方法はありませんが、次のヘッダーのいずれかの存在は、要求がプロキシサーバーからルーティングされたことを強く示している:

via: 
forwarded: 
x-forwarded-for: 
client-ip: 

あなたはまたのために見ることができますプロキシまたはpxyクライアントドメイン名。

0

あなたがリクエストオブジェクトにこれらのヘッダを探して、それに応じて要求が 2を介して、プロキシ/ない

1)を経由しているかどうかを決定することができます)X-転送さ-について

ノートこれではないこと100%確実なショットトリックは、これらのプロキシサーバーが上記のヘッダーを追加するかどうかによって異なります。

7

プロキシサーバーが検出されないようにプロキシサーバーが適切に設定されていると、そのことを知ることができません。

ほとんどのプロキシサーバーは、他にも言及しているようにヘッダーを提供しますが、ユーザーを完全に隠すためのプロキシには存在しません。

このような状況を検出するには、Cookie、プロキシヘッダー検出、IPヒューリスティックなどの複数の検出方法を使用する必要があります。このような状況については、http://www.osix.net/modules/article/?id=765をご覧ください。また、プロキシブラックリストを使用することを検討してください - 多くの組織によって公開されています。

しかし、何も100%確実ではありません。上記の方法を使ってほとんどの単純な状況を避けることができますが、今日の終わりにはTCP/IPトランザクションを形成する一連のパケットであり、セキュリティ、認証などの今日のアイデアではTCP/IPプロトコルは開発されていません

多くの企業がさまざまな理由で企業規模のプロキシを導入していますが、プロキシを一般的なルールとしてブロックするだけでは、必ずしも視聴者を制限する必要があり、必ずしも望ましいとは限りません。しかし、これらのプロキシは通常、適切なヘッダーで自分自身を宣言します。隠れているユーザーではなく正当なユーザーをブロックする可能性があります。私のドメインは(感謝グーグル)それに注入素敵なハードコアポルノ広告でGoogleのAppSpot.com上にホストされてしまった後

-Adam

1

はこれに掘りのビットをしました。

これから葉を取るhtaccess idea私は以下のことを行っていますが、これはうまくいくようです。私は、AppSpotに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 
関連する問題