Вопрос о реферере IFrame - asp.net С#
-
18-09-2019 - |
Вопрос
Одно из наших приложений будет запущено в iframe внутри отдела продаж, и у меня возникли проблемы с доступом к рефереру.Они хотели бы, чтобы мы провели несколько проверок рефералов, чтобы убедиться, что запрос поступает от отдела продаж и нам предоставлены IP-адреса для проверки.
Моя проблема в том, что каждый раз, когда я пытаюсь получить доступ к рефереру одним из следующих двух методов:
HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]
HttpContext.Current.Request.UrlReferrer
он возвращает мне ноль.
Есть идеи, как я могу получить реферер?
ПС:Я знаю, что вы можете подделать реферера, но это часть требования.
Решение
Если я правильно понимаю вопрос, у вас есть клиентские сайты, которые ссылаются на ваш сайт путем встраивания IFrames в свои веб-страницы, указывая на ваш сайт.Вы хотите «убедиться», что запросы поступают с хост-страницы, которая сама является частью определенного набора сайтов.Набор обозначенных сайтов описывается набором IP-адресов.Это покрывает это?
Сложный.Прежде всего, предположим, что у вас есть реферер.Вам нужно будет получить от него имя хоста (достаточно легко, используя команду Uri
тип).Затем вам нужно разрешить IP-адрес для имени хоста с помощью DNS (опять же не так уж сложно с .NET Framework).
Конечно, вам нужно получить реферера, и это самое сложное.Браузеры не всегда помещают в запрос заголовок Referer.Это особенно верно, когда адрес реферала не находится в том же домене, что и реферер, как в данном случае.ВАУ, это зрелище.
Лучшим подходом к решению этой проблемы (и не подверженным подделке) является использование аутентификации на основе хэша.Не должно быть слишком сложным (если исходные требования в любом случае считали, что реферерное тестирование достаточно).
Другие советы
Реферер присутствует только в том случае, если страница была запрошена по ссылке.Когда страница открывается, скажем, из адресной строки браузера, введя адрес напрямую (или, в вашем случае, установив параметр src.IFRAME), реферер будет пуст.