Как я могу определить, выполняется ли http-запрос во внутренней сети или в Интернете? - PullRequest
0 голосов
/ 20 марта 2011

Я пытаюсь написать прокси-сервер для регистрации и формирования трафика с сайтов, размещенных на ферме IIS.Правила хостинга гласят:

Добавьте или настройте прокси-сервер для разрешения запросов от веб-серверов к интернет-ресурсам.Убедитесь, что вы регистрируете запросы с веб-серверов.·

Разрешить веб-серверу отправлять запросы прокси только в Интернет, а не во внутреннюю сеть.Таким образом, если целью запроса является Интернет, он должен быть разрешен через прокси.Но если приложение пытается запросить ресурс или сервер во внутренней сети, это следует предотвратить.

Я использую FiddlerCore (библиотека, которая управляет Fiddler), которая позволяет мне проверять запросы, прежде чем ониотправляются и снова после возвращения заголовков ответа (в этот момент у меня есть IP-адрес узла).

Что я могу сделать, чтобы определить, выполняется ли запрос локально или в Интернет?В настоящее время я помещаю в черный список известные внутренние IP-адреса, но это не так.

Ответы [ 3 ]

0 голосов
/ 20 марта 2011

HTTP RFC указывает, что клиент должен указать заголовок хоста .Таким образом, определите, является ли хост локальным или подключенным к Интернету, проверив заголовок хоста.

Если у вас есть клиенты, которые нарушают это (не указан хост), у вас есть право удалить / отклонить их с 400 (неверный запрос).(Лучше проверить, если есть те, которые не следуют протоколу)

0 голосов
/ 20 марта 2011

Проблема, как правило, заключается в том, чтобы решить, какие адреса являются «внутренними», а какие - внешними.RFC1918 - это один из механизмов, с помощью которого вы можете сделать это, но IE использует другую стратегию;см. http://msdn.microsoft.com/en-us/library/bb250483(v=vs.85).aspx для получения дополнительной информации о том, как IE это делает.

0 голосов
/ 20 марта 2011

Что не так с черным списком внутренних IP-адресов? Обычно вы просто рассматриваете все не маршрутизируемые сети RFC 1918 как внутренние (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) и называете это хорошо. Если вы на самом деле общедоступные маршрутизируемые по всем направлениям, ну, то же самое относится, но добавьте ваши общедоступные сети в список. Я что-то упустил?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...