В каких случаях HTTP REFERER будет пустым
Я знаю, что можно получить пустой HTTP_REFERER. При каких обстоятельствах это происходит? Если я получаю пустой, всегда ли это означает, что пользователь изменил его? Является ли получение пустого так же, как получение нулевого? и при каких обстоятельствах я тоже это получаю?
4 ответов
Он будет/может быть пустым, когда пользователь
- введите URL-адрес сайта в самой адресной строке браузера.
- посетил сайт с помощью закладки, поддерживаемой браузером.
- посетил сайт в качестве первой страницы в окне / вкладке.
- щелкните ссылку во внешнем приложении.
- переключено с URL https на URL http.
- переключено с URL https на другой URL https.
- установлено программное обеспечение безопасности (antivirus / firewall / etc), который удаляет реферера из всех запросов.
- находится за прокси, который удаляет реферера из всех запросов.
- посетил сайт программно (например, curl) без установки заголовка реферера (searchbots!).
HTTP_REFERER-отправлено браузером, с указанием последней страницы, которую браузер просматривал!
Если Вы доверяете [HTTP_REFERER] по какой-либо важной причине, вы не должны, так как его можно легко подделать:
- некоторые браузеры ограничивают доступ, чтобы не позволить HTTP_REFERER быть переданным
- введите адрес в адресной строке не будет передавать HTTP_REFERER
- открыть новое окно браузера не будет передавать HTTP_REFERER, потому что HTTP_REFERER = Значение null
- имеет некоторый браузер аддон, который блокирует его по соображениям конфиденциальности. Некоторые брандмауэры и AVs делают это.
попробуйте это расширение Firefox, вы сможете установить любые заголовки, которые вы хотите:
@Master of Celebration:
Firefox:
расширения: refspoof, refontrol, изменить заголовки, нет реферера
полностью отключить: опция доступна в about:config в сети".http.sendRefererHeader", и вы хотите установить это в 0, чтобы отключить передачу реферера.
Google chrome / Chromium:
расширения: noref, spoofy, внешний noreferrer
полностью отключить: Chnage ~/.config / google-chrome / по умолчанию / настройки или ~/.config / chromium / Default / настройки и установить это:
{
...
"enable_referrers": false,
...
}
или просто добавьте -- no-referrers в ярлык или в cli:
google-chrome --no-referrers
Опера:
полностью отключить: Настройки > Настройки > Дополнительно > сеть и снимите флажок "отправить информацию реферера"
веб-сервис подмены:
автономный фильтрация прокси (подделка любого заголовка):
спуфинг http_referer при использовании wget
'--referer=url'
подмена http_referer при использовании curl
- e, --referer
спуфинг http_referer с telnet
telnet www.yoursite.com 80 (press return)
GET /index.html HTTP/1.0 (press return)
Referer: http://www.hah-hah.com (press return)
(press return again)
список BalusC является твердым. Еще один способ это поле часто кажется пустым, когда пользователь находится за прокси-сервером. Это похоже на то, чтобы быть за брандмауэром, но немного отличается, поэтому я хотел упомянуть об этом для полноты.
Он также будет пуст, если новый стандартный проект политики реферера используется для предотвращения отправки заголовка referer в источник запроса. Пример:
<meta name="referrer" content="none">
хотя Chrome и Firefox уже реализовали черновую версию политики реферера, вы должны быть осторожны с ней, потому что, например, Chrome ожидает no-referrer
вместо none
(и я видел также never
где-то).