Браузер на отключение заголовков referer

Обновлено: 03.07.2024

Как это можно сделать в Firefox (в настоящее время версия 47)? Я использую Ubuntu GNOME 16.04 с GNOME 3.20.

Желательно, чтобы у меня было 3 варианта:

  • Возможность включить его для всего, как по умолчанию
  • Возможность отключить его, только если домен, с которого вы пришли, является сторонним по отношению к тому, на который вы собираетесь
  • Возможность полностью отключить даже при переходе на поддомен или другую страницу сайта

В адресной строке Firefox перейдите к about:config .

В поле поиска about:config страницы введите следующее:

Следующие значения принимаются:

0 - отключить реферер.

1 - Отправьте заголовок Referer при нажатии на ссылку и установите document.referrer для следующей страницы.

2 - Отправьте заголовок Referer при нажатии на ссылку или загрузке изображения (по умолчанию).

Следует отметить, что некоторые веб-сайты, такие как Google и Tumblr, включают ссылку в URL ссылки, а не в заголовок.

Пожалуйста, объясните, на что способны разные значения. Также я немного обновил свой вопрос, хотя, если это невозможно через Firefox, тогда это нормально. Кстати, не беспокойтесь о поисковике, потому что я использую DuckDuckGo и настроил его так, чтобы он ничего подобного не делал. И, пожалуйста, оставляйте комментарий, пингуя меня каждый раз, когда вы редактируете свой ответ, чтобы я знал, что вы обновили его (то есть, когда редактирование достаточно важно, чтобы я мог еще раз взглянуть на ваш ответ). Я нашел информацию, которую искал, и отредактировал ваш ответ.

Есть дополнения Firefox, которые могут это сделать. Они, как правило, облегчают включение / выключение отправки заголовка реферера и не требуют ручного изменения конфигурации Firefox. Например,

Умный Реферер :

Отправлять рефереры только при нахождении в одном домене

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

Переключить реферер:

Это дополнение позволяет пользователю переключать рефереры между 3 состояниями:

Referer 0: Никогда не отправляйте заголовок Referer и не устанавливайте document.referrer.

Referer 1: отправьте заголовок Referer при нажатии на ссылку и установите document.referrer для следующей страницы

Referer 2: Отправьте заголовок Referer, нажав на ссылку или загрузив изображение, и установите document.referrer для следующей страницы. (По умолчанию)

Вы можете найти еще больше, выполнив поиск по сайту «Firefox Addons» по запросу «refer» или «referrer».

Как это можно сделать в Firefox (в настоящее время версия 47)? Я запускаю Ubuntu GNOME 16.04 с GNOME 3.20.

Желательно, чтобы у меня было 3 варианта:

  • Возможность включить его для всех, как по умолчанию.
  • Возможность отключить его только в том случае, если домен, из которого вы пришли, является сторонним, если вы собираетесь
  • Возможность отключить полностью, даже когда вы переходите на поддомен или другую страницу веб-сайта

3 ответа

В строке URL Firefox перейдите к about:config .

В поле поиска страницы about:config введите следующее:

Принимаются следующие значения:

0 - Отключить реферер.

1 - Отправьте заголовок Referer при нажатии на ссылку и установите document.referrer для следующей страницы.

2 - Отправляйте заголовок Referer при нажатии на ссылку или загрузке изображения (по умолчанию).

Следует отметить, что некоторые веб-сайты, такие как google и tumblr, включают ссылку в URL-адрес ссылки, а не заголовок.

Есть Firefox дополнения, которые могут это сделать. Они, как правило, упрощают включение /выключение отправки заголовка реферера и не требуют ручной модификации конфигурации Firefox. Например,

Smart Referer :

Отправляйте ссылки только в одном домене.

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

Переключить реферер:

Этот аддон позволяет пользователю переключать ссылки между тремя состояниями:

Referer 0: никогда не отправляйте заголовок Referer или не устанавливайте document.referrer

Referer 1: Отправьте заголовок Referer при нажатии ссылки и установите document.referrer для следующей страницы

Referer 2: Отправляйте заголовок Referer при нажатии на ссылку или загрузке изображения и установите document.referrer для следующей страницы. (По умолчанию)

Вы можете найти еще больше, выполнив поиск на сайте Firefox Addons для «refer» или «referrer».

Надстройка Firefox RefControl позволяет вам для установки глобального поведения Referer, которое может быть перезаписано для определенных доменов.

  • Обычный (например, Firefox работает по умолчанию)
  • Блокировать (вообще не отправлять Referer)
  • Заменить (отправляет корневой адрес текущего домена как Referer)
  • Конкретный (позволяет вам самостоятельно определять строку, которая должна быть отправлена ​​как Referer)

Для всех этих действий вы можете включить, если они должны работать для всех ссылок или только для ссылок на другие домены.

(Последнее обновление с 2014-12, но оно все еще отлично работает с текущими версиями Firefox.)

Лучшие практики по настройке заголовка ответа Referrer-Policy и использования реферера во входящих запросах.

Maud Nalpas

  • Неожиданная утечка информации при запросах на другой источник препятствует конфиденциальности пользователей в Интернете. Здесь может помочь защитная политика реферера.
  • Рассмотрите возможность установки политики реферера strict-origin-when-cross-origin . Она сохраняет большую часть полезности реферера, одновременно снижая риск утечки данных при запросах на другой источник.
  • Не используйте рефереры для защиты от подделки межсайтовых запросов (CSRF). Вместо этого используйте токены CSRF и другие заголовки в качестве дополнительного уровня безопасности.

Прежде чем мы начнем:

  • Если вы не уверены в разнице между «сайтом» и «источником», ознакомьтесь со статьей «Понимание "same-site" и "same-origin"».
  • В Referer отсутствует буква R из-за неправильного написания в спецификации. Заголовок Referrer-Policy и referrer в JavaScript и DOM написаны правильно.

В приведенном ниже примере заголовок Referer включает полный URL-адрес страницы на сайте site-one , с которого был сделан запрос.

HTTP-запрос, включая заголовок Referer

Заголовок Referer может присутствовать в разных типах запросов:

  • запросы навигации, когда пользователь нажимает ссылку;
  • запросы подресурсов, когда браузер запрашивает изображения, плавающие фреймы, скрипты и другие ресурсы, которые необходимы странице.

Что касается навигации и плавающих фреймов, к этим данным также можно получить доступ через JavaScript с помощью document.referrer .

Значение Referer может быть полезным. Например, служба аналитики может использовать это значение, чтобы определить, что 50% посетителей на site-two.example пришли из social-network.example .

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

URL-адреса с путями, сопоставленными с различными угрозами конфиденциальности и безопасности.

URL-адреса с №1 по №5 содержат личную информацию, иногда даже идентифицирующую или конфиденциальную. Незаметная утечка данных при запросах на другие источники может поставить под угрозу конфиденциальность пользователей в Интернете.

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

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

Вы можете выбрать одну из восьми политик. В зависимости от политики данные, из заголовка Referer (и document.referrer ) могут быть доступны следующие данные:

Некоторые политики разработаны так, чтобы вести себя по-разному в зависимости от контекста: запрос на другой источник или в пределах текущего источника, безопасность, или и то, и другое (независимо от того, отправляется ли запрос из более безопасного протокола в менее безопасный). Это полезно для ограничения объема информации, передаваемой из разных источников, или для менее безопасных источниковпри сохранении разнообразия рефереров на вашем собственном сайте.

Вот обзор, показывающий, как политики реферера ограничивают данные URL, доступные из заголовка Referer и document.referrer :

Различные политики рефереров и их поведение в зависимости от протокола безопасности и контекста разных источников.

По состоянию на июль 2020 г.

Если политика реферера не задана, будет использоваться политика браузера по умолчанию.

  • strict-origin-when-cross-origin (см. закрытую ошибку)
  • strict-origin-when-cross-origin в режиме конфиденциального просмотра и для трекеров
  • no-referrer-when-downgrade со strict-origin-when-cross-origin

Цель: Явно установите политику для повышения конфиденциальности, например, strict-origin-when-cross-origin (или более строгую).

Есть разные способы установить политики реферера для вашего сайта:

Вы можете установить разные политики для разных страниц, запросов или элементов.

  1. Политика на уровне элементов.
  2. Политика на уровне страницы.
  3. Браузер по умолчанию.

Пример:

Изображение будет запрошено с политикой no-referrer-when-downgrade , в то время как все остальные запросы подресурсов с этой страницы будут следовать политике strict-origin-when-cross-origin .

Вы также можете использовать инструменты разработчика Chrome, Edge или Firefox, чтобы увидеть политику реферера, используемую для конкретного запроса. На момент написания этой статьи Safari не показывает Referrer-Policy , но показывает отправленный заголовок Referer .

Скриншот панели Network в Chrome DevTools с заголовками Referer и Referrer-Policy.

Chrome DevTools, панель Network с выбранным запросом.

Резюме: явно установите политику для повышения конфиденциальности, например, strict-origin-when-cross-origin (или более строгую).

Если политика реферера не задана, будет использоваться политика браузера по умолчаниюфактически, веб-сайты часто подчиняются политике браузера по умолчанию. Но это не самый лучший вариант, потому что:

  • Политики браузеров по умолчанию либо no-referrer-when-downgrade , strict-origin-when-cross-origin , либо более строгиев зависимости от браузера и режима (конфиденциального просмотра или инкогнито). Таким образом, ваш сайт не будет вести себя предсказуемо в разных браузерах.
  • Браузеры принимают более строгие настройки по умолчанию, такие как strict-origin-when-cross-origin и такие механизмы, как referrer trimming для запросов на другой источник. Явный выбор политики повышения конфиденциальности до изменения стандартных настроек браузера дает вам контроль над ситуацией и помогает проводить тесты по своему усмотрению.

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

Всё это означает, что strict-origin-when-cross-origin , как правило, является разумным выбором.

Пример: установка политики strict-origin-when-cross-origin

Или на стороне сервера, например в Express:

В этом случае используйте прогрессивный подход: установите для вашего веб-сайта политику защиты, такую как strict-origin-when-cross-origin и, если необходимо, менее строгую политику для определенных запросов или элементов HTML.

Обратите внимание, что Safari/WebKit может ограничивать заголовок document.referrer или Referer для межсайтовых запросов. Смотрите подробности.

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

Предупреждение: Данные, которые могут показаться вам не конфиденциальными, могут быть конфиденциальными для ваших пользователей. Другой вариантваши пользователи не ждут, что данные будут незаметно передавать при запросах на другие источники.

Заголовок Referer может содержать конфиденциальные, личные или идентифицирующие данные, поэтому убедитесь, что вы относитесь к ним как к таковым.

Использование реферера из входящих запросов на другие источники имеет ряд ограничений:

  • Если у вас нет контроля над реализацией отправителя запросов, вы не можете делать предположения о заголовке Referer (и document.referrer ), который вы получаете. Отправитель запроса может в любой момент решить перейти на политику no-referrer или на более строгую политику, чем предыдущая,это означает, что вы получите меньше данных через Referer , чем раньше.
  • Браузеры всё чаще используют для Referrer-Policy значение по умолчанию strict-origin-when-cross-origin . Это означает, что теперь вы можете получать только источник (вместо полного URL-адреса реферера) во входящих запросах на другие источники, если сайт, который их отправляет, не имеет установленной политики.
  • Браузеры могут изменить способ управления Referer ; например, в будущем они могут решить всегда обрезать рефереры до источников в запросах подресурсов на другие источники, чтобы защитить конфиденциальность пользователей.
  • Referer (и document.referrer ) может содержать больше данных, чем вам нужно, например полный URL-адрес, когда вы хотите только узнать, поступил ли запрос из другого источника.

Возможно, вам придется рассмотреть альтернативы, если:

  • Важный функционал вашего сайта использует URL-адрес реферера из входящих запросов на другие источники;
  • И/или если ваш сайт больше не получает ту часть URL-адреса реферера, которая ему нужна в запросе на другой источник. Это происходит, когда отправитель запросов изменил свою политику или когда у них не задана политика, а политика браузера по умолчанию изменилась (как в Chrome 85).

Чтобы определить альтернативы, сначала проанализируйте, какую часть реферера вы используете.

  • Если вы используете реферер в скрипте, который имеет доступ к странице верхнего уровня, альтернативой является window.location.origin .
  • Если возможно, используйте такие заголовки, как Origin и Sec-Fetch-Site , они дадут Origin или ответ, поступил ли запрос из другого источника. Возможно, именно это вам и нужно.

Если вам нужны другие элементы URL (путь, параметры запроса…):

  • Параметры запроса могут относиться к вашему варианту использования, и это избавляет вас от работы по синтаксическому анализу реферера.
  • Если вы используете реферер в скрипте, который имеет доступ к странице верхнего уровня, альтернативой может быть window.location.pathname Извлеките только раздел пути URL-адреса и передайте его в качестве аргумента, чтобы любая потенциально конфиденциальная информация в параметрах URL-адреса не передавалась.

Если вы не можете использовать эти альтернативы:

  • Проверьте, можно ли изменить ваши системы таким образом, чтобы они ожидали от отправителя запроса ( site-one.example ) явного задания нужной вам информации в какой-либо конфигурации. Плюсы: более явный, более конфиденциальный для пользователей site-one.example с ориентацией на будущее. Минусы: потенциально большой объем работы с вашей стороны или со стороны пользователей вашей системы.
  • Проверьте, может ли сайт, который отправляет запросы, согласиться установить политику no-referrer-when-downgrade . Минусы: потенциально менее конфиденциальная политика для пользователей site-one.example ; может поддерживаться не во всех браузерах.

Обратите внимание, что отправитель запроса всегда может решить не отправлять реферер, установив no-referrer (а злоумышленник может даже подделать реферер).

Используйте токены CSRF в качестве основной защиты. Для дополнительной защиты используйте SameSite, а вместо Referer заголовки, такие как Origin (доступно в запросах POST и CORS) и Sec-Fetch-Site (если доступно).

Обязательно защитите личные или конфиденциальные данные пользователей, которые могут находиться в Referer .

Если вы используете только источник, проверьте, может ли заголовок Origin применяться в качестве альтернативы. Этот заголовок может дать вам информацию для отладки более простым способом и без необходимости синтаксического анализа реферера.

Платежные сервисы могут полагаться на заголовок Referer входящих запросов для проверок безопасности.

  • Пользователь нажимает кнопку Купить на online-shop.example/cart/checkout .
  • online-shop.example перенаправляет на payment-provider.example для проведения транзакцим.
  • payment-provider.example проверяет Referer этого запроса на соответствие списку допустимых Referer , установленных продавцами. Если заголовок не соответствует ни одной записи в списке, payment-provider.example отклоняет запрос. Если соответствует, продолжается обработка транзакции пользователя.

Резюме: как платежный сервис вы можете использовать Referer в качестве базовой проверки против простых атак, но вам совершенно необходимо иметь другой, более надежный метод проверки.

Сам по себе заголовок Referer не является надежной основой для проверки: запрашивающий сайт, независимо от того, является ли он легитимным продавцом или нет, может установить политику no-referrer , которая сделает информацию Referer недоступной для платежного сервиса. Но просмотр Referer может помочь вам поймать наивных злоумышленников, которые не установили политику no-referrer . Поэтому вы можете решить использовать Referer в качестве первой базовой проверки. Если вы сделаете это:

  • Не ждите, что Referer всегда будет присутствовать; и если он присутствует, проверяйте только те данные, которые он минимально будет включать: источник. При задании списка разрешенных значений Referer убедитесь, что в него не включен путь, а только источник. Пример: допустимые значения Referer online-shop.example должны быть online-shop.example , а не online-shop.example/cart/checkout . Почему? Поскольку, ожидая либо отсутствия Referer вообще, либо значение Referer , которое является источником запрашивающего веб-сайта, вы предотвращаете непредвиденные ошибки, поскольку вы не делаете предположений о политике Referrer-Policy реферера, установленной вашим продавцом, или о поведении браузера, если у продавца нет установленной политики. И сайт, и браузер могут обрезать Referer отправленный во входящем запросе, только до источника или не отправлять Referer вообще.
  • Если заголовок Referer отсутствует или если он присутствует и ваша базовая проверка заголовка Referer прошла успешно: вы можете перейти к другому, более надежному методу проверки (см. ниже).

Какой метод проверки более надежен?

Один из надежных методов проверкипозволить инициатору запроса хешировать параметры запроса вместе с уникальным ключом. Как платежный сервис, вы можете рассчитать тот же хеш на своей стороне и принять запрос только в том случае, если хеш соответствует вашим расчетам.

Защитная политика реферераотличный способ предоставить вашим пользователям больше конфиденциальности.

Чтобы узнать больше о различных методах защиты ваших пользователей, ознакомьтесь с коллекцией Safe and secure от web.dev!

Большое спасибо за вклад и отзывы всем рецензентам, особенно Каустубхе Говинду, Дэвиду Ван Кливу, Майку Уэсту, Сэму Даттону, Роуэну Меревуду, Джеку Баски и Кейси Баски.

Немногие озадачиваются подробной настройкой браузера, хотя браузер – это самая популярная программа для работы в интернете. На примере Firefox я покажу, как можно сделать свой браузер максимально безопасным и чуть более «анонимным» по сравнению с его настройкой по умолчанию, при этом сохранив даже некоторую функциональность! 🙂 Opera или Chrome, имеют схожие настройки, но, на мой взгляд, самый гибкий с точки зрения безопасности – всё же Firefox.

Цель статьи – не обеспечить высокий уровень анонимности, но эффективно отсеять множество идентифицирующих, лишних и даже потенциально опасных данных, которые, так или иначе, передаются или принимаются браузером.

firefox
Java, Flash, Adobe Reader…
Fingerprint (отпечаток) браузера


Браузер предоставляет серверу десятки категорий данных, в том числе и так называемый user agent. Всё это может сформировать достаточно уникальный «цифровой отпечаток браузера», по которому его можно найти среди многих других уже в анонимном сеансе.
Существует немало дополнений по подмене юзерагента браузера, я привык пользоваться User Agent Overrider. Дополнение стабильно, удобно, постоянно обновляется, есть в официальных репозиториях Firefox.

Скрипты Javascript

Скрипты Javascript, исполняемые на стороне клиента, могут собирать для сервера множество категорий идентифицирующий данных. Более того, если посещаемый сайт подвержен XSS, то включенные на нём скрипты Javascript помогут злоумышленнику провести успешную атаку со всеми вытекающими последствиями.
Для того, чтобы запретить данные скрипты лучше всего подходит дополнение NoScript.

Помимо Javascript дополнение может блокировать еще множество различных элементов: Java, Flash и пр. Пользователь может временно разрешить выполнение всего активного содержимого на странице или сделать это на постоянной основе.

Web Bugs

Web Bugs — это невидимые детали веб-страниц, используемые для мониторинга посещений сайта, они способны дополнительно отсылать серверу разные данные о клиенте.
Для блокирования web bugs существуют два основных дополнения: Ghostery и DoNotTrackMe.
Принцип у них схож, когда я их сравнивал, то остановился по своим субъективным ощущениями на Ghostery, его и опишу. Важно отметить, что при дефолтной настройке Ghostery не блокирует все баги и треккеры, это надо сделать вручную, в его настройках по локальному адресу: resource://firefox-at-ghostery-dot-com/ghostery/data/options.html.

При заходе на сайт, где есть подобные элементы, Ghostery их заблокирует и выдаст следующее оповещение.

Со временем вы заметите, что Ghostery и RequestPolicy пересекаются в блокировании некоторых элементов, например, Google Analytics, Yandex.Metrics и пр.

Прочее

Совершенно лишним будет отправлять какую-либо служебную информацию в Mozilla.

Для пущей анонимности я бы советовал вообще не хранить пароли, хотя Firefox имеет возможность использования мастер-пароля, с помощью которого шифруются все остальные пароли, так что вытащить их в открытом виде нельзя.


Не столько безопасно, сколько просто полезно. Adblock Plus нужен для блокировки всей возможной рекламы при этом он имеет регулярно обновляемый список фильтров. Я отмечу, что в настройках есть галочка: «Разрешить некоторую ненавязчивую рекламу», которую при желании можно убрать.

Последний совет для тех, кто активно пользуется SOCKS при веб-серфинге. Настройкаnetwork.proxy.socks_remote_dns определяет, где будут выполняться DNS-запросы при использовании SOCKS5. Значение «true» устанавливает, что они будут выполняться через SOCKS-прокси, а не на самом клиенте. Так мы защитимся от DNS-leaks.

Подробнее о каждой настройке из about:config Firefox можно почитать тут. А по этой ссылке часть их расписана по-русски.

Уффф, вроде всё! Сам использую описанную конфигурацию Firefox. Сначала нужно было немного привыкнуть, но я понимаю, зачем всё это нужно.
Спасибо! Готов ответить на все вопросы.

Читайте также: