Как вы подделываете HTTP_REFERER? - PullRequest
3 голосов
/ 06 марта 2009

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

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

ТИА бараны

Ответы [ 3 ]

9 голосов
/ 06 марта 2009

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

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

2 голосов
/ 13 декабря 2011

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

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

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

или

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

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

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

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

2 голосов
/ 06 марта 2009

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

...