【问题标题】:How to tell if a Request is coming from a Proxy?如何判断请求是否来自代理?
【发布时间】:2010-10-15 22:58:55
【问题描述】:

是否可以检测传入请求是否是通过代理服务器发出的?如果 Web 应用程序通过 IP 地址“禁止”用户,他们可以通过使用代理服务器来绕过它。这只是阻止这些请求的原因之一。如何实现?

【问题讨论】:

    标签: asp.net proxy http-request


    【解决方案1】:

    恕我直言,没有 100% 可靠的方法来实现这一点,但以下任何标头的存在都强烈表明请求是从代理服务器路由的:

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

    您也可以在客户端域名中查找 proxypxy

    【讨论】:

      【解决方案2】:

      您可以在请求对象中查找这些标头,并据此确定请求是通过代理还是非代理

      1) 通过 2) X-Forwarded-For

      请注意,这不是 100% 确定的技巧,取决于这些代理服务器是否选择添加上述标头。

      【讨论】:

        【解决方案3】:

        如果代理服务器设置正确以避免代理服务器的检测,您将无法判断。

        正如其他人提到的那样,大多数代理服务器都提供标头,但那些不存在于旨在完全隐藏用户的代理上。

        您将需要使用多种检测方法,例如 cookie、代理标头检测,可能还需要使用 IP 启发式方法来检测此类情况。查看http://www.osix.net/modules/article/?id=765 了解有关这种情况的一些信息。还可以考虑使用代理黑名单 - 它们由许多组织发布。

        但是,没有什么是 100% 确定的。您可以采用上述策略来避免大多数简单的情况,但归根结底,它只是一系列形成 TCP/IP 事务的数据包,而 TCP/IP 协议并不是按照当今的安全、身份验证等思想开发的.

        请记住,许多公司出于各种原因部署公司范围的代理,如果您只是作为一般规则阻止代理,则必然会限制您的受众,这可能并不总是可取的。但是,这些代理通常会使用适当的标头来宣布自己 - 您最终可能会阻止合法用户,而不是善于隐藏自己的用户。

        -亚当

        【讨论】:

          【解决方案4】:

          在我的域被托管在 Google 的 AppSpot.com 上并在其中注入了漂亮的硬核色情广告后,我对此进行了一些研究(感谢 Google)。

          htaccess idea 中吸取教训,我正在执行以下操作,这似乎正在工作。我为注入 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
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-12-24
            • 1970-01-01
            • 2013-12-11
            • 2013-02-21
            • 2017-12-12
            • 1970-01-01
            • 2021-05-07
            • 2015-09-21
            相关资源
            最近更新 更多