Вопрос

Мне нужно попытаться подделать HTTP_REFERER, переданный моей другой странице, чтобы на целевой странице я мог определить, поступает ли запрос с «правильной» страницы, и выполнить соответствующую логику.

  1. Как мне это сделать в JavaScript (AJAX)?
  2. Могу ли я сделать это в ASP.Net?

Тиа Рамс

Это было полезно?

Решение

Вообще говоря, вы не можете заставить другие браузеры возвращать ложный HTTP_REFERER без эксплойта, плагина или другого расширения.Если вы хотите изменить значение, отправленное из вашего веб-браузера и используете FireFox, посмотрите Изменить заголовки расширение.

В любом случае вам никогда не следует полагаться на точность HTTP_REFERER.Нет никакой гарантии, что полученный вами HTTP_REFERER не является поддельным или просто не отправлен.

Другие советы

Если вы хотите проверить на целевой странице, поступает ли запрос с «правильной» страницы, вам не нужно подделывать реферер.Все, что вам нужно сделать, это отправить запрос с другой страницы.Настройте страницу по URL-адресу, отличному от того, который вы считаете «правильным», и отправляйте запросы оттуда, либо щелкнув ссылку на целевую страницу, либо разместив изображение, полученное из места назначения.

Уже упоминалось, что на самом деле подделать вещи невозможно.Но чтобы уточнить, генерируется заголовок HTTP_REFERER. через браузер, поэтому на стороне сервера вы не можете этим управлять (включая вещи, передающие javascript, которые могут быть включены или не включены).

Если вы просто хотите проверить реакцию вашей страницы на определенные заголовки (например, «Referer:»), вы можете использовать инструменты командной строки, такие как завиток или wget которые доступны в большинстве вариантов BSD и Linux (включая OS/X).Если вы используете MS Windows, вы можете получить curl или wget, используя Сигвин.

    wget -O - --referer="http://example.com/some/path" http://example.com/

или

    curl -e "http://example.com/some/path" http://example.com/

Но я думаю, что ваша основная причина сделать это, по-видимому, - «защитить» страницу.Если вы действительно хотите быть уверенным, что страница (назовем ее «B») посещается только после первого посещения какой-либо другой страницы («A»), тогда вам нужна более сложная логика на стороне сервера.

Если вы храните файл cookie сеанса, вы можете встроить некоторую логику на страницу «А», которая устанавливает логическую переменную.Затем добавьте логику на странице «B», которая проверяет, установлена ​​ли переменная.

Я оставлю это в качестве упражнения, чтобы читатель мог понять, как это сделать в ASP.NET.(Потому что я программист PHP.;-] )

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top