Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Maud NalpasНа этой странице описаны некоторые рекомендации по настройке политики реферера и использованию реферера во входящих запросах.
HTTP-запросы могут включать дополнительный заголовок Referer , который указывает URL-адрес источника или веб-страницы, с которой был сделан запрос. Заголовок Referrer-Policy определяет, какие данные доступны в заголовке Referer .
В следующем примере заголовок Referer включает полный URL site-one с которой был сделан запрос.
Заголовок Referer может присутствовать в различных типах запросов:
Для навигации и iframe вы также можете получить доступ к этим данным с помощью JavaScript, используя document.referrer .
Вы можете многому научиться на значениях Referer . Например, служба аналитики может использовать их, чтобы определить, что 50 % посетителей site-two.example пришли из social-network.example . Но когда полный URL-адрес, включая путь и строку запроса, отправляется в Referer через источник , это может поставить под угрозу конфиденциальность пользователя и создать угрозу безопасности:
URL-адреса с 1 по 5 содержат личную информацию, а иногда и конфиденциальную или идентифицирующую информацию. Негласная утечка этих данных из разных источников может поставить под угрозу конфиденциальность веб-пользователей.
URL №6 — это URL-адрес возможности . Если это сообщение получит кто-либо, кроме предполагаемого пользователя, злоумышленник может получить контроль над учетной записью этого пользователя.
Чтобы ограничить доступ к данным реферера для запросов с вашего сайта, вы можете установить политику реферера.
Вы можете выбрать одну из восьми политик. В зависимости от политики данные, доступные из заголовка Referer (и document.referrer ), могут быть:
Некоторые политики разработаны так, чтобы вести себя по-разному в зависимости от контекста : запроса между разными источниками или одного и того же источника, независимо от того, является ли пункт назначения запроса таким же безопасным, как источник, или и то, и другое. Это полезно для ограничения объема информации, передаваемой между источниками или менее безопасными источниками, сохраняя при этом богатство реферера на вашем собственном сайте.
В следующей таблице показано, как политики реферера ограничивают данные URL-адреса, доступные из заголовка Referer и document.referrer :
Область действия политики | Название политики | Референт: Нет данных | Реферер: только Origin | Референт: Полный URL-адрес |
---|---|---|---|---|
Не учитывает контекст запроса | no-referrer | проверять | ||
origin | проверять | |||
unsafe-url | проверять | |||
Ориентирован на безопасность | strict-origin | Запрос с HTTPS на HTTP | Запрос с HTTPS на HTTPS или HTTP на HTTP | |
no-referrer-when-downgrade | Запрос с HTTPS на HTTP | Запрос с HTTPS на HTTPS или HTTP на HTTP | ||
Конфиденциальность | origin-when-cross-origin | Запрос между источниками | Запрос того же происхождения | |
same-origin | Запрос между источниками | Запрос того же происхождения | ||
Конфиденциальность и безопасность | strict-origin-when-cross-origin | Запрос с HTTPS на HTTP | Запрос между источниками с HTTPS на HTTPS или HTTP на HTTP | Запрос того же происхождения |
Вот некоторые вещи, которые следует учитывать при настройке политики реферера:
По состоянию на октябрь 2021 г.
Если политика реферера не установлена, браузер использует политику по умолчанию.
Браузер | Referrer-Policy по умолчанию |
---|---|
Хром | По умолчанию используется strict-origin-when-cross-origin . |
Firefox | По умолчанию используется strict-origin-when-cross-origin . Начиная с версии 93 , для пользователей строгой защиты от отслеживания и приватного просмотра менее строгие политики реферера no-referrer-when-downgrade , origin-when-cross-origin и unsafe-url игнорируются для межсайтовых запросов, то есть реферер всегда обрезается для межсайтовых запросов, независимо от политики веб-сайта. |
Край | По умолчанию используется strict-origin-when-cross-origin . |
Сафари | Значение по умолчанию похоже на strict-origin-when-cross-origin с некоторыми специфическими отличиями. Подробности см. в разделе «Предотвращение отслеживания» . |
Цель : явно установить политику повышения конфиденциальности, например strict-origin-when-cross-origin (или более строгую).
Существуют различные способы установки политики рефералов для вашего сайта:
Вы можете установить разные политики для разных страниц, запросов или элементов.
HTTP-заголовок и мета-элемент находятся на уровне страницы. Приоритетный порядок определения эффективной политики элемента следующий:
Пример:

Изображение запрашивается с использованием политики no-referrer-when-downgrade , а все остальные запросы подресурсов с этой страницы следуют политике strict-origin-when-cross-origin .
Securityheaders.com удобен для определения того, какую политику использует конкретный сайт или страница.
Вы также можете использовать инструменты разработчика в Chrome, Edge или Firefox, чтобы просмотреть политику реферера, используемую для конкретного запроса. На момент написания этой статьи Safari не отображает заголовок Referrer-Policy , но показывает отправленный Referer .
Мы настоятельно рекомендуем явно установить политику повышения конфиденциальности, например strict-origin-when-cross-origin (или более строгую).
Если вы не установите политику реферера, будет использоваться политика браузера по умолчанию — фактически веб-сайты часто подчиняются политике браузера по умолчанию. Но это не идеально, потому что:
Вам нужна безопасная, повышающая конфиденциальность и полезная политика. Что означает «полезный» зависит от того, чего вы хотите от реферера:
Все это означает, что strict-origin-when-cross-origin как правило, является разумным выбором.
Пример: установка политики strict-origin-when-cross-origin
Или на стороне сервера, например в Express:
const helmet = require('helmet'); app.use(helmet.referrerPolicy());
В этом случае примените прогрессивный подход : установите для своего веб-сайта защитную политику, такую как strict-origin-when-cross-origin и, если необходимо, более либеральную политику для конкретных запросов или элементов HTML.
Safari/WebKit может ограничивать document.referrer или заголовок Referer для межсайтовых запросов. Смотрите подробности .
fetch(url, );
Ваша политика должна зависеть от вашего веб-сайта и вариантов использования, определенных вами, вашей командой и вашей компанией. Если некоторые URL-адреса содержат идентифицирующие или конфиденциальные данные, установите защитную политику.
Предупреждение. Данные, которые могут показаться вам не конфиденциальными, могут быть конфиденциальными для ваших пользователей или просто не являться данными, которые им нужны или которые ожидают незаметной утечки из перекрестного происхождения.
Вот несколько рекомендаций, что делать, если ваш сайт использует URL-адрес реферера входящих запросов.
Referer может содержать частные, персональные или идентифицирующие данные, поэтому обязательно относитесь к ним соответствующим образом.
Входящие рефереры могут изменитьсяИспользование реферера из входящих запросов между источниками имеет несколько ограничений:
Возможно, вам придется рассмотреть альтернативы, если:
Чтобы определить альтернативы, сначала проанализируйте, какую часть реферера вы используете.
Отправитель запроса всегда может решить не отправлять реферер, установив политику no-referrer , а злоумышленник может даже подделать реферера.
Используйте токены CSRF в качестве основной защиты. Для дополнительной защиты используйте SameSite , а вместо Referer используйте такие заголовки, как Origin (доступный для запросов POST и CORS) и Sec-Fetch-Site если он доступен.
Обязательно защитите личные или конфиденциальные данные пользователей, которые могут находиться в Referer .
Если вы используете только источник, проверьте, можете ли вы использовать заголовок Origin в качестве альтернативы. Это может предоставить вам информацию, необходимую для целей отладки, более простым способом и без необходимости анализа реферера.
Поставщики платежей могут полагаться на заголовок Referer входящих запросов для проверок безопасности.
Как поставщик платежей вы можете использовать Referer в качестве базовой защиты от некоторых атак. Однако заголовок Referer сам по себе не является надежным основанием для проверки. Запрашивающий сайт, независимо от того, является ли он законным продавцом или нет, может установить политику no-referrer , которая делает информацию Referer недоступной для поставщика платежей.
Просмотр Referer может помочь поставщикам платежей поймать наивных злоумышленников, которые не установили политику no-referrer . Если вы используете Referer в качестве первой проверки:
Чтобы более надежно проверять платежи, позвольте запрашивающей стороне хешировать параметры запроса вместе с уникальным ключом. Поставщики платежных услуг могут затем вычислить тот же хэш на вашей стороне и принять запрос только в том случае, если он соответствует вашим расчетам.
Что происходит с Referer , когда HTTP-сайт продавца без политики реферера перенаправляется на поставщика платежей HTTPS?
Referer не отображается в запросе к поставщику платежей HTTPS, поскольку большинство браузеров по умолчанию используют strict-origin-when-cross-origin или no-referrer-when-downgrade когда на веб-сайте не установлена политика. Переход Chrome на новую политику по умолчанию не изменит этого поведения.
Примечание. Если ваш сайт использует HTTP, перейдите на HTTPS .
Политика защитных рефералов — отличный способ предоставить вашим пользователям больше конфиденциальности.
Чтобы узнать больше о различных методах защиты ваших пользователей, ознакомьтесь с нашей коллекцией «Безопасно и надежно».
Выражаем огромную благодарность за вклад и отзывы всем рецензентам, особенно Каустубхе Говинду, Дэвиду Ван Кливу, Майку Уэсту, Сэму Даттону, Роуэну Мервуду, Джкску и Кейси Баскес.
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2020-07-30 UTC.