Зміст

    Тема Referrer-Policy

    01.09.2021

    Кожен, хто до 2013 року займався аналізом пошукових запитів, зауважив, що раніше по полю Referer можна було дізнатися з якої пошукової системи і за яким ключовим словом проводився пошук. При переході на сайт в заголовку Referer передавався повну адресу сторінки, з якої перейшов користувач. Така адреса містив в собі параметр з ключовим словом, яке було введено в пошуковик, наприклад http://www.google.com.ua/search?hl=uk&q=хостинг Україна& BtnG = Пошук Google & meta = & aq = 8. Але зараз ми можемо дізнатися лише з якої пошукової системи прийшов відвідувач, так як в поле Referer вказується тільки адреса пошукача, наприклад https://www.google.com.

    Кожен раз, коли ви переходите з одного сайту на інший, браузер додає заголовок Referer з адресою сторінки, яку ви залишаєте. Така адреса може містити інформацію, яку не хотілося б передавати, наприклад токен відновлення пароля. Припустимо, якщо перейти з сайту https://adm.tools/reset-password/?token=1FA5B622CDE на ukraine.com.ua, то на сайт ukraine.com.ua буде переданий заголовок Referer, який буде містити токен для скидання пароля. Для того щоб уникнути таких вразливостей, існує заголовок Referrer-Policy, що забезпечує безпеку.

    Зверніть увагу - заголовок Referer, що містить назву сайту, з якого перейшов відвідувач, містить одну букву r, в той час як заголовок Referrer-Policy містить дві rr.

    Тема Referrer-Policy підтримує наступні значення:

    • no-referrer - ніколи не відправляти заголовок Referer.
    • same-origin - відправляти повний URL для запитів в межах доменного імені та протоколу. При переході по сайту буде передаватися Referer з повною адресою. Корисно, коли ви на своєму сайті відстежуєте рух відвідувача.
    • origin - відправляти тільки доменне ім'я, в тому числі і при переході на HTTP-сайти. якщо вказати strict-origin, То при переході на протокол HTTP нічого передаватися не буде.
    • origin-when-cross-origin - передавати повний URL в межах сайту, а при переході на інші сайти передавати тільки інформацію про домен. якщо вказати strict-origin-when-cross-origin, То при переході на протокол HTTP поле Referer передаватися не буде.

    Важливо враховувати, що якщо сервер не повертає даний заголовок, то браузери за замовчуванням будуть використовувати значення strict-origin-when-cross-origin для всіх запитів.

    Найбільш оптимальним значенням заголовка Referrer-policy є origin-when-cross-origin так як передача Referer в межах сайту дозволяє відстежувати рух відвідувача і не загрожує безпеці. При переході на інші сайти передається тільки домен, з якого був здійснений перехід.

    Існує також кілька не мають особливого сенсу значень:

    • no-referrer-when-downgrade - відправляти заголовок завжди, коли не змінюється протокол. Тобто, заголовки передаються при переході тільки в межах HTTP або тільки в межах HTTPS.
    • unsafe-url - завжди відправляти повну адресу сайту, з якого здійснено перехід. Можна просто не відправляти заголовок, і результат буде той же.

    Порівняльна таблиця заголовків. Для прикладу ми знаходимося на сайті https://a.com/page.html і переходимо на вказаний сайт:

    https://a.com/ http://a.com/ https://b.com/ http://b.com/
    no-referrer NULL NULL NULL NULL
    same-origin https://a.com/page.html NULL NULL NULL
    origin https://a.com/ https://a.com/ https://a.com/ https://a.com/
    strict-origin https://a.com/ NULL https://a.com/ NULL
    origin-when-cross-origin https://a.com/page.html https://a.com/ https://a.com/ https://a.com/
    strict-origin-when-cross-origin https://a.com/page.html NULL https://a.com/ NULL
    no-referrer-when-downgrade https://a.com/page.html NULL https://a.com/page.html NULL
    unsafe-url https://a.com/page.html https://a.com/page.html https://a.com/page.html https://a.com/page.html

    Даний заголовок може передавати як сам скрипт, якщо буде містити код:

    Також, це налаштування можна зробити на стороні веб-сервера nginx:

    add_header Referrer-Policy "strict-origin-when-cross-origin" always;

    Перевірити, чи працює відправка такого заголовка, можна за допомогою інструменту Перевірка заголовків.

    Клієнти Хостингу Україна зможуть активувати даний функціонал в панелі управління хостингом в розділі «Налаштування сайту».