Можно ли определить, выполняется ли входящий запрос через прокси-сервер? Если веб-приложение «запрещает» пользователей через IP-адрес, они могут обойти это с помощью прокси-сервера. Это лишь одна из причин блокировки этих запросов. Как это можно достичь?Как узнать, поступает ли запрос от прокси?
ответ
ИМХО нет 100% надежного способа для достижения этой цели, но наличие любых из следующих заголовков является сильным признаком того, что запрос был направлен от прокси-сервера:
via:
forwarded:
x-forwarded-for:
client-ip:
Вы можете также искать прокси или pxy в доменном имени клиента.
Вы можете искать эти заголовки в Object Request и, соответственно, решить, является ли запрос через прокси-сервер/не
1) Via 2) X-Forwarded-For
отметить, что это не 100% уверенный трюк, зависит от того, предпочитают ли эти прокси-серверы добавлять выше заголовки.
Если прокси-сервер настроен правильно, чтобы избежать обнаружения прокси-серверов, вы не сможете сказать.
Большинство прокси-серверов поставляют заголовки, как упоминают другие, но те не присутствуют на прокси-серверах, предназначенных для полного скрытия пользователя.
Для обнаружения таких ситуаций вам необходимо будет использовать несколько методов обнаружения, таких как куки, определение заголовка прокси и, возможно, IP-эвристика. Обратите внимание на http://www.osix.net/modules/article/?id=765 для получения информации об этой ситуации. Также рассмотрите использование черного списка прокси - они публикуются многими организациями.
Однако ничто не является на 100% уверенным. Вы можете использовать вышеупомянутую тактику, чтобы избежать большинства простых ситуаций, но в конце концов это всего лишь серия пакетов, образующих транзакцию TCP/IP, а протокол TCP/IP не был разработан с сегодняшними идеями по безопасности, аутентификации и т. Д. .
Имейте в виду, что многие корпорации развертывают широкие прокси-серверы компании по разным причинам, и если вы просто блокируете прокси-серверы в качестве общего правила, вы обязательно ограничиваете свою аудиторию, и это может не всегда быть желательным. Однако эти прокси обычно объявляют себя соответствующими заголовками - вы можете в конечном итоге заблокировать законных пользователей, а не пользователей, которые хорошо скрываются.
-Adam
ли немного копать на этом после того, как мой домен был размещается на Google, AppSpot.com с хорошими Жесткое порно объявлений инжектированных в него (спасибо Google).
Принимая лист от этого 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