Zanim zaczniemy:
- Jeśli nie masz pewności, jaka jest różnica między „site” a „origin”, zapoznaj się z artykułem na temat wyników „same-site” i „same-origin”.
- W nagłówku
Referer
brakuje litery R z powodu oryginalnego błędu pisowni w specyfikacji. NagłówekReferrer-Policy
ireferrer
w JavaScript oraz DOM są zapisane poprawnie.
Podsumowanie
- Przeglądarki wdrażają nowe, zwiększające prywatność zasady dotyczące stron odsyłających, aby zapewnić dobre działanie w sytuacjach, gdy witryna nie ma określonych zasad.
- Planujemy stopniowo włączać
strict-origin-when-cross-origin
jako domyślną zasadę w wersji 85 Chrome. Może to wpłynąć na przypadki użycia, w których użycie wartości strony odsyłającej z innego źródła może mieć wpływ. - To jest nowe ustawienie domyślne, ale witryny nadal mogą wybrać dowolne zasady.
- Aby wypróbować tę zmianę w Chrome, włącz flagę na
chrome://flags/#reduced-referrer-granularity
. Jeśli chcesz zobaczyć, jak to działa, możesz też obejrzeć tę prezentację. - Sposób traktowania stron odsyłających przez przeglądarki może ulec zmianie, nie tylko w zasadach dotyczących stron odsyłających, więc warto zwracać na to uwagę.
Co się zmienia i dlaczego?
Żądania HTTP mogą zawierać opcjonalny nagłówek Referer
, który wskazuje źródło lub adres URL strony internetowej, z którego wysłano żądanie. Nagłówek Referer-Policy
określa, jakie dane są udostępniane w nagłówku Referer
oraz na potrzeby nawigacji i elementów iframe w elemencie document.referrer
miejsca docelowego.
To, jakie informacje są wysyłane w nagłówku Referer
w żądaniu z Twojej witryny, zależy od ustawionego przez Ciebie nagłówka Referrer-Policy
.
Gdy zasada nie jest skonfigurowana, używane są ustawienia domyślne przeglądarki. Strony często uzależniają się od przeglądarki domyślnej.
W przypadku elementów nawigacyjnych i elementów iframe dane w nagłówku Referer
są też dostępne za pomocą JavaScriptu, który używa document.referrer
.
Do niedawna zasady no-referrer-when-downgrade
były powszechnie stosowane w przeglądarkach. Jednak obecnie wiele przeglądarek jest na etapie przechodzenia na bardziej szczegółowe ustawienia, które zwiększają prywatność.
Planujemy zmienić domyślną zasadę Chrome z no-referrer-when-downgrade
na strict-origin-when-cross-origin
od wersji 85.
Oznacza to, że jeśli w witrynie nie ustawiono żadnej zasady, Chrome będzie domyślnie używać strict-origin-when-cross-origin
. Nadal możesz ustawić wybrane zasady – zmiana będzie dotyczyć tylko witryn, które nie mają ustawionych zasad.
Co oznacza ta zmiana?
strict-origin-when-cross-origin
oferuje więcej prywatności. Zgodnie z tą zasadą w nagłówku Referer
żądań z innych domen jest wysyłana tylko wartość origin.
Zapobiega to wyciekom prywatnych danych, które mogą być dostępne z innych części pełnego adresu URL, np. ścieżki i ciągu zapytania.
Na przykład:
Żądanie z innej domeny wysyłane z https://site-one.example/stuff/detail?tag=red na https://site-2.example/...:
- W elemencie
no-referrer-when-downgrade
: strona odsyłająca: https://site-one.example/stuff/detail?tag=red. - Za pomocą
strict-origin-when-cross-origin
: strona odsyłająca: https://site-one.example/.
Co pozostaje bez zmian?
- Podobnie jak
no-referrer-when-downgrade
, elementstrict-origin-when-cross-origin
jest zabezpieczony: brak strony odsyłającej (nagłówkaReferer
idocument.referrer
), gdy żądanie jest wysyłane z źródła HTTPS (bezpiecznego) do HTTP (niezabezpieczone). Dzięki temu, jeśli witryna korzysta z protokołu HTTPS (jeśli nie, to potraktuj go priorytetowo), adresy URL z niej nie wycieknie w żądaniach niezgodnych z protokołem HTTPS. Każdy użytkownik w sieci będzie mógł je zobaczyć, a to naraża użytkowników na ataki typu „man in the middle”. - W obrębie tego samego pochodzenia wartość nagłówka
Referer
jest pełnym adresem URL.
Na przykład: Żądanie z tej samej domeny wysyłane z adresu https://site-one.example/stuff/detail?tag=red na https://site-one.example/...:
- Za pomocą atrybutu
strict-origin-when-cross-origin
: strona odsyłająca: https://site-one.example/stuff/detail?tag=red
Efekty
Z dyskusji na temat innych przeglądarek oraz z eksperymentów przeprowadzonych przez Chrome w Chrome 84 wynika, że awarie widoczne dla użytkowników powinny być ograniczone.
Mniej szczegółowe informacje mogą mieć wpływ na logowanie lub analizy po stronie serwera, które polegają na pełnym dostępnym adresie URL strony odsyłającej.
Co trzeba zrobić?
Nowe domyślne zasady dotyczące stron odsyłających w Chrome planujemy rozpocząć w wersji 85 (wersja beta w lipcu 2020 r., sierpień 2020 r. w przypadku wersji stabilnej). Sprawdź stan we wpisie o stanie Chrome.
Zrozumienie i wykrywanie zmiany
Aby dowiedzieć się, jak w praktyce obowiązują nowe domyślne zmiany, obejrzyj tę prezentację.
Możesz też skorzystać z tej wersji demonstracyjnej, aby wykryć zasady stosowane w uruchomionej instancji Chrome.
Przetestuj zmianę i zobacz, czy będzie miała wpływ na Twoją witrynę.
Możesz już wypróbować tę zmianę od Chrome 81. Aby to zrobić, otwórz w Chrome stronę chrome://flags/#reduced-referrer-granularity
i włącz tę flagę. Gdy ta flaga jest włączona, wszystkie witryny bez zasady używają nowej wartości domyślnej strict-origin-when-cross-origin
.
Możesz teraz sprawdzać, jak zachowuje się Twoja witryna i backend.
Aby wykryć wpływ, sprawdź też, czy baza kodu Twojej witryny korzysta z strony odsyłającej – za pośrednictwem nagłówka Referer
żądań przychodzących na serwerze lub z document.referrer
w JavaScript.
Niektóre funkcje w Twojej witrynie mogą działać nieprawidłowo lub działać inaczej, jeśli do witryny jest używana strona odsyłająca z innego źródła (a dokładniej ścieżki lub ciągu zapytania) ORAZ ten punkt początkowy używa domyślnych zasad dotyczących stron odsyłających w przeglądarce (czyli nie ma ustawionych zasad).
Jeśli ma to wpływ na Twoją witrynę, rozważ inne możliwości
Jeśli używasz strony odsyłającej do uzyskiwania dostępu do pełnej ścieżki lub ciągu zapytania dla żądań kierowanych do Twojej witryny, masz kilka możliwości:
- Aby zapewnić ochronę przed żądaniem CSRF, logowanie i w innych przypadkach użycia, używaj alternatywnych technik i nagłówków, takich jak
Origin
iSec-fetch-Site
. Zapoznaj się ze sprawdzonymi metodami dotyczącymi witryn odsyłających i witryn odsyłających. - Możesz uzgodnić z partnerami konkretne zasady, jeśli jest to konieczne i w sposób przejrzysty dla użytkowników.
Kontrola dostępu – gdy strona odsyłająca jest używana przez witryny do przyznawania określonym źródłom dostępu do ich zasobów innym źródłom, może tak być, chociaż po zmianie Chrome źródło będzie nadal udostępniane w nagłówku
Referer
(i wdocument.referrer
).
Pamiętaj, że większość przeglądarek idzie w podobnym kierunku, jeśli chodzi o stronę odsyłającą (zobacz ustawienia domyślne przeglądarek i ich ewolucje w artykule Referer and Referrer-Policy: sprawdzone metody).
Wprowadź w swojej witrynie jednoznaczne zasady, które będą zgodne z zasadami ochrony prywatności
Jakie parametry Referer
powinny być wysyłane w żądaniach pochodzących z Twojej witryny (czyli jakie zasady należy ustawić dla witryny)?
Nawet jeśli zmieniasz zasady Chrome, warto ustawić wyraźną, ulepszającą prywatność zasadę, np. strict-origin-when-cross-origin
, lub bardziej rygorystycznie.
Pozwala to chronić użytkowników i sprawi, że działanie witryny w różnych przeglądarkach będzie bardziej przewidywalne. Głównie jednak rozwiązanie to daje Ci pełną kontrolę nad działaniem witryny, nie zależnie od ustawień domyślnych przeglądarki.
Więcej informacji o ustawianiu zasad znajdziesz w artykule Zasady dotyczące stron odsyłających i witryn odsyłających: sprawdzone metody.
Informacje o Chrome Enterprise
Zasady Chrome dla firm ForceLegacyDefaultReferrerPolicy
są dostępne dla administratorów IT, którzy chcą wymusić stosowanie poprzednich domyślnych zasad dotyczących stron odsyłających no-referrer-when-downgrade
w środowiskach firmowych. Dzięki temu firmy zyskują więcej czasu
na testowanie i aktualizowanie aplikacji.
Ta zasada zostanie usunięta w Chrome 88.
Prześlij opinię
Chcesz podzielić się opinią lub zgłosić coś nowego? Podziel się opinią o zamiarach Chrome na dostawę lub wyślij tweeta z pytaniami na adres @maudnals.
Dziękujemy za pomoc i opinie wszystkim recenzentom, zwłaszcza Kaustubha Govind, David Van Cleve, Mike West, Sam Dutton, Rowan Merewood, Jxck i Kayce Basques.