Definicja „tej samej witryny” ewoluuje i obejmuje teraz schemat adresu URL, więc linki między wersjami HTTP i HTTPS witryny są teraz traktowane jako żądania z innej witryny. Jeśli to możliwe, przejdź domyślnie na HTTPS, aby uniknąć problemów, lub przeczytaj dalszą część artykułu, aby dowiedzieć się, jakie wartości atrybutu SameSite są potrzebne.
Schemeful Same-Site modyfikuje definicję witryny (internetowej) z samej domeny rejestrowanej na schemat + domenę rejestrowaną. Więcej informacji i przykładów znajdziesz w artykule Omówienie pojęć "ta sama witryna" i "to samo pochodzenie".
Dobra wiadomość jest taka, że jeśli Twoja witryna jest już w pełni uaktualniona do HTTPS, nie musisz się niczym martwić. Nic się dla Ciebie nie zmieni.
Jeśli nie masz jeszcze w pełni uaktualnionej witryny, to powinno być Twoim priorytetem.
Jeśli jednak zdarzają się sytuacje, w których użytkownicy Twojej witryny przechodzą między HTTP a HTTPS, niektóre z tych typowych scenariuszy i powiązane z nimi zachowanie plików cookie SameSite opisujemy w dalszej części tego artykułu.
Możesz włączyć te zmiany do testowania w Chrome i Firefoxie.
- W Chrome 86 włącz
about://flags/#schemeful-same-site. Śledź postępy na stroniestanu Chrome. - W Firefoxie 79 ustaw
network.cookie.sameSite.schemefulnatrueza pomocąabout:config. Śledź postępy za pomocą zgłoszenia w Bugzilli.
Jednym z głównych powodów zmiany domyślnego ustawienia plików cookie na SameSite=Lax była ochrona przed atakami typu Cross-Site Request Forgery
(CSRF). Niezabezpieczony ruch HTTP nadal stwarza jednak możliwość manipulowania plikami cookie przez osoby atakujące sieć, które będą następnie używane w zabezpieczonej wersji HTTPS witryny. Utworzenie dodatkowej granicy między schematami w różnych witrynach zapewnia dodatkową ochronę przed tymi atakami.
Typowe scenariusze obejmujące różne schematy
Nawigacja
Nawigowanie między wersjami witryny obejmującymi różne schematy (np. linkowanie z
http://site.example do https://site.example) umożliwiało wcześniej wysyłanie
SameSite=Strict plików cookie. Jest to teraz traktowane jako nawigacja między witrynami, co oznacza, że pliki cookie SameSite=Strict będą blokowane.
| HTTP → HTTPS | HTTPS → HTTP | |
SameSite=Strict
|
⛔ Zablokowane | ⛔ Zablokowane |
SameSite=Lax
|
✓ Dozwolone | ✓ Dozwolone |
SameSite=None;Secure
|
✓ Dozwolone | ⛔ Zablokowane |
Wczytywanie zasobów podrzędnych
Wszelkie zmiany, które tu wprowadzisz, należy traktować tylko jako tymczasowe rozwiązanie, dopóki nie przejdziesz na pełny protokół HTTPS.
Przykłady zasobów podrzędnych to obrazy, elementy iframe i żądania sieciowe wysyłane za pomocą XHR lub Fetch.
Wczytywanie zasobu podrzędnego obejmującego różne schematy na stronie umożliwiało wcześniej wysyłanie lub ustawianie plików cookie SameSite=Strict lub SameSite=Lax. Teraz jest to traktowane tak samo jak każdy inny zasób podrzędny innej firmy lub z innej witryny, co oznacza, że wszystkie pliki cookie SameSite=Strict lub SameSite=Lax będą blokowane.
Ponadto, nawet jeśli przeglądarka zezwala na wczytywanie zasobów z niezabezpieczonych schematów na zabezpieczonej stronie, wszystkie pliki cookie będą blokowane w tych żądaniach, ponieważ pliki cookie innych firm lub z innych witryn wymagają atrybutu Secure.
| HTTP → HTTPS | HTTPS → HTTP | |
SameSite=Strict
|
⛔ Zablokowane | ⛔ Zablokowane |
SameSite=Lax
|
⛔ Zablokowane | ⛔ Zablokowane |
SameSite=None;Secure
|
✓ Dozwolone | ⛔ Zablokowane |
Wysyłanie formularza metodą POST
Wysyłanie danych między wersjami witryny obejmującymi różne schematy umożliwiało wcześniej wysyłanie plików cookie ustawionych za pomocą SameSite=Lax lub SameSite=Strict. Teraz jest to traktowane jako wysyłanie metodą POST z innej witryny – można wysyłać tylko pliki cookie SameSite=None. Ten scenariusz może wystąpić w witrynach, które domyślnie wyświetlają niezabezpieczoną wersję, ale po przesłaniu formularza logowania lub realizacji zakupu uaktualniają użytkowników do wersji zabezpieczonej.
Podobnie jak w przypadku zasobów podrzędnych, jeśli żądanie pochodzi z bezpiecznego kontekstu (np. HTTPS) do niezabezpieczonego kontekstu (np. HTTP), wszystkie pliki cookie będą blokowane w tych żądaniach, ponieważ pliki cookie innych firm lub z innych witryn wymagają atrybutu Secure.
| HTTP → HTTPS | HTTPS → HTTP | |
SameSite=Strict
|
⛔ Zablokowane | ⛔ Zablokowane |
SameSite=Lax
|
⛔ Zablokowane | ⛔ Zablokowane |
SameSite=None;Secure
|
✓ Dozwolone | ⛔ Zablokowane |
Jak mogę przetestować swoją witrynę?
Narzędzia dla programistów i komunikaty są dostępne w Chrome i Firefoxie.
W Chrome 86 karta Problemy w Narzędziach deweloperskich będzie zawierać problemy z Schemeful Same-Site. W przypadku Twojej witryny mogą się pojawić te problemy:
Problemy z nawigacją:
- „Aby nadal wysyłać pliki cookie w żądaniach z tej samej witryny, przeprowadź pełną migrację do HTTPS” – ostrzeżenie, że plik cookie zostanie zablokowany w przyszłej wersji Chrome.
- „Aby wysyłać pliki cookie w żądaniach z tej samej witryny, przeprowadź pełną migrację do HTTPS” – ostrzeżenie, że plik cookie został zablokowany.
Problemy z wczytywaniem zasobów podrzędnych:
- „Aby nadal wysyłać pliki cookie do zasobów podrzędnych z tej samej witryny, przeprowadź pełną migrację do HTTPS” lub „Aby nadal zezwalać zasobom podrzędnym z tej samej witryny na ustawianie plików cookie, przeprowadź pełną migrację do HTTPS” – ostrzeżenia, że plik cookie zostanie zablokowany w przyszłej wersji Chrome.
- „Aby wysyłać pliki cookie do zasobów podrzędnych z tej samej witryny, przeprowadź pełną migrację do HTTPS” lub „Aby zezwalać zasobom podrzędnym z tej samej witryny na ustawianie plików cookie, przeprowadź pełną migrację do HTTPS” – ostrzeżenia, że plik cookie został zablokowany. To drugie ostrzeżenie może się też pojawić podczas wysyłania formularza metodą POST.
Więcej informacji znajdziesz w artykule Wskazówki dotyczące testowania i debugowania Schemeful Same-Site.
W Firefoxie 79, gdy network.cookie.sameSite.schemeful jest ustawione na true za pomocą about:config, w konsoli będzie się wyświetlać komunikat o problemach z Schemeful Same-Site.
W swojej witrynie możesz zobaczyć te komunikaty:
- „Plik cookie
cookie_namewkrótce będzie traktowany jako plik cookie z innej witryny w przypadkuhttp://site.example/, ponieważ schemat się nie zgadza”. - „Plik cookie
cookie_namejest traktowany jako plik cookie z innej witryny w przypadkuhttp://site.example/, ponieważ schemat się nie zgadza”.
Najczęstsze pytania
Moja witryna jest już w pełni dostępna w HTTPS. Dlaczego widzę problemy w Narzędziach deweloperskich przeglądarki?
Możliwe, że niektóre linki i zasoby podrzędne nadal wskazują na niezabezpieczone adresy URL.
Jednym ze sposobów rozwiązania tego problemu jest użycie HTTP Strict-Transport-Security
(HSTS) i dyrektywy includeSubDomain. Dzięki HSTS i includeSubDomain nawet jeśli jedna z Twoich stron przypadkowo zawiera niezabezpieczony link, przeglądarka automatycznie użyje wersji zabezpieczonej.
Co zrobić, jeśli nie mogę przejść na HTTPS?
Zdecydowanie zalecamy przejście na HTTPS w całej witrynie, aby chronić użytkowników. Jeśli nie możesz tego zrobić samodzielnie, skontaktuj się z dostawcą hostingu, aby sprawdzić, czy oferuje taką opcję. Jeśli samodzielnie hostujesz witrynę, to Let's Encrypt udostępnia kilka narzędzi do instalowania i konfigurowania certyfikatu. Możesz też rozważyć przeniesienie witryny za CDN lub inny serwer proxy, który może zapewnić połączenie HTTPS.
Jeśli to nadal nie jest możliwe, spróbuj zmniejszyć ochronę SameSite w przypadku plików cookie, których dotyczy problem.
- Jeśli blokowane są tylko pliki cookie
SameSite=Strict, możesz obniżyć poziom ochrony doLax. - Jeśli blokowane są zarówno pliki cookie
Strict, jak iLax, a Twoje pliki cookie są wysyłane do (lub ustawiane z) bezpiecznego adresu URL, możesz obniżyć poziom ochrony doNone.- To obejście nie zadziała , jeśli adres URL, do którego wysyłasz pliki cookie (lub z którego je ustawiasz), jest niezabezpieczony. Wynika to z tego, że
SameSite=Nonewymaga atrybutuSecurew plikach cookie, co oznacza, że te pliki cookie nie mogą być wysyłane ani ustawiane przez niezabezpieczone połączenie. W takim przypadku nie będziesz mieć dostępu do tego pliku cookie, dopóki nie przejdziesz na HTTPS. - Pamiętaj, że jest to tylko rozwiązanie tymczasowe, ponieważ pliki cookie innych firm zostaną ostatecznie całkowicie wycofane.
- To obejście nie zadziała , jeśli adres URL, do którego wysyłasz pliki cookie (lub z którego je ustawiasz), jest niezabezpieczony. Wynika to z tego, że
Jak to wpłynie na moje pliki cookie, jeśli nie mam określonego atrybutu SameSite?
Pliki cookie bez atrybutu SameSite są traktowane tak, jakby miały określony atrybut
SameSite=Lax a to samo zachowanie w przypadku różnych schematów dotyczy też tych plików cookie. Pamiętaj, że tymczasowy wyjątek dotyczący niebezpiecznych metod nadal obowiązuje. Więcej informacji znajdziesz w sekcji
Lax + POST mitigation w najczęstszych pytaniach dotyczących `SameSite` w Chromium SameSite FAQ
.
Jak to wpływa na połączenia WebSocket?
Połączenia WebSocket będą nadal traktowane jako połączenia z tej samej witryny, jeśli mają ten sam poziom bezpieczeństwa co strona.
Ta sama witryna:
- połączenie
wss://zhttps:// - połączenie
ws://zhttp://
Inna witryna:
- połączenie
wss://zhttp:// - połączenie
ws://zhttps://