referrer и Referrer-Policy в HTTP-запросах

HTTP
В этой статье будет представлено поле в заголовке HTTP-запроса, связанное с безопасностью и конфиденциальностью —referrer, и как пройтиReferrer PolicyмодифицироватьreferrerЗначение либо отображается, либо нет.

что такое реферер

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


То есть, когда вы инициируете HTTP-запрос, заголовок запросаreferrerПоле указывает, с какой страницы вы делаете запрос.

сцены, которые будут использоваться

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

Конфиденциальность

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

Безопасность

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

конечно бывают и другие ситуацииreferrerЗначение , например, в недавнем проекте, выполненном компанией, был запрос, ответ был 400, потому что заголовок запроса был слишком большим.Referrer Policyпо умолчанию, показываяreferrerЭто полная информация об URL-адресе. URL-адрес содержит много конфиденциальных данных, таких как зашифрованный токен, идентификатор сеанса и т. д. Длина очень велика. Файл cookie в заголовке запроса и запрошенный URL-адрес также содержат большой объем информации. Наконец, мы решили позволитьreferrerНесите только информацию о корневом адресе веб-сайта вместо его полного пути, тем самым уменьшая размер заголовка.

Referrer-Policy

Referrer-PolicyРоль заключается в управлении заголовком запросаreferrer, который в настоящее время является кандидатом в стандарт, но некоторые браузеры уже поддерживают этот стандарт.
В настоящее времяReferrer-PolicyСодержит только следующие значения:
enum ReferrerPolicy {
"",
"no-referrer",
"no-referrer-when-downgrade",
"same-origin",
"origin",
"strict-origin",
"origin-when-cross-origin",
"strict-origin-when-cross-origin",
"unsafe-url"
};

пустой строки

Если для него задана пустая строка, она будет установлена ​​в соответствии с механизмом браузера по умолчанию.referrer, что по умолчанию иno-referrer-when-downgradeставь такой же.

no-referrer

Не показывайreferrerлюбую информацию в заголовках запроса.

no-referrer-when-downgrade

Это значение по умолчанию. При переходе с https-сайта на http-сайт или запросе его ресурсов (безопасное понижение версии HTTPS→HTTP) он не отображаетсяreferrerинформация, в противном случае (защищенный одноранговый HTTPS→HTTPS или HTTP→HTTP) находится вreferrerОтображает полную информацию об URL-адресе исходного веб-сайта.

same-origin

Указывает, что браузер будет отображать толькоreferrerИнформация предоставляется веб-сайту того же происхождения и представляет собой полную информацию об URL-адресе. Так называемый веб-сайт того же происхождения — это веб-сайт с тем же протоколом, доменным именем и портом.

origin

Укажите браузерreferrerВ поле отображается только исходный адрес (т. е. протокол, доменное имя, порт) исходного веб-сайта, а не полный путь.

strict-origin

Эта стратегия более безопасна иoriginПолитики похожи, просто не разрешеноreferrerИнформация отображается в запросах с https-сайтов на http-сайты (ухудшение безопасности).

origin-when-cross-origin

При отправке запроса на тот же веб-сайт браузерreferrerПолная информация об URL-адресе отображается в URL-адресе, и только исходный адрес (протокол, имя домена, порт) отображается при отправке веб-сайта другого происхождения.

strict-origin-when-cross-origin

иorigin-when-cross-originАналогично, только не разрешеноreferrerИнформация отображается в запросах с https-сайтов на http-сайты (ухудшение безопасности).

unsaft-url

Браузер всегда будет отображать полную информацию об URL вreferrerполе, независимо от того, на какой сайт был сделан запрос.

Метод изменения политики реферера

Есть 5 способов:

1.пройти черезReferrer-Policy HTTP headerнастраивать:

Referrer-Policy: origin

2.пройти через<meta>изменение элементаReferrer Policy, непосредственно измените имя наreferrerСодержание

<meta name="referrer" content="origin">

3.давать<a>, <area>, <img>, <iframe>, или<link>настройки элементаreferrerpolicyАтрибуты

<a href="http://example.com" referrerpolicy="origin">

4.Чтобы не отображатьreferrerинформацию, вы также можете дать<a>, <area>, <link>настройки элементаrelсвязь связи.

<a href="http://example.com" rel="noreferrer">

Суммировать

что использоватьReferrer PolicyЗависит от потребностей сайта, но в целомunsafe-urlНе рекомендуется использовать его.Также, если вы хотите отобразить только корневой адрес веб-сайта, рекомендуется использоватьstrict-originи сtrict-origin-when-cross-origin. Если в URL-адресе нет конфиденциальной информации, он используется по умолчанию.no-referrer-when-downgrade.