Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Що таке Referrer-Policy і чим небезпечний повний URL у заголовку Referer?

Коли користувач переходить за посиланням чи сторінка завантажує сторонній ресурс (зображення, скрипт), браузер надсилає заголовок Referer - адресу сторінки, звідки прийшов запит.

Чим це небезпечно: URL часто містить те, що не повинно потрапляти на інші сайти:

  • токени - посилання для скидання пароля (/reset-password?token=...), підтвердження email, запрошення;
  • ідентифікатори й персональні дані - /orders/9921, /patients/42, пошукові запити з іменами;
  • внутрішні адреси адмінок і службових сторінок.

Якщо на сторінці скидання пароля є посилання на зовнішній сайт чи підключено сторонній скрипт аналітики, токен опиниться в їхніх логах.

Referrer-Policy керує, скільки інформації передавати:

Значення Що отримує інший сайт
no-referrer нічого
same-origin повний URL лише для свого походження, іншим - нічого
strict-origin лише походження (https://example.com/), і нічого при переході з HTTPS на HTTP
strict-origin-when-cross-origin повний URL для своїх, лише походження для чужих, нічого при пониженні до HTTP
unsafe-url завжди повний URL - небезпечно
Referrer-Policy: strict-origin-when-cross-origin

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

Для чутливих сторінок (скидання пароля, сторінки з токенами в URL) - no-referrer на рівні сторінки чи окремого посилання:

<meta name="referrer" content="no-referrer">
<a href="https://external.example" rel="noreferrer">...</a>

Кращий підхід - не тримати секрети в URL узагалі: токен з посилання одразу обміняти на сесію чи прибрати з адресного рядка після першого використання (history.replaceState чи редирект на чисту адресу).

Аналітика: деякі маркетингові інструменти покладаються на повний Referer. Компроміс - strict-origin-when-cross-origin, а не unsafe-url: для аналізу джерел трафіку зазвичай досить домену.

Докладніше в документації: MDN: Referrer-Policy

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання