Od Chrome 135 możesz używać nowej wartości sandbox:allow-same-site-none-cookies Jeśli ta zasada jest określona, a pliki cookie innych firm są niedostępne, przeglądarka będzie wysyłać tylko pliki cookie SameSite=None w żądaniach HTTP pochodzących z piaskownicy iframe źródła własnego.
Czym jest element iframe umieszczony w piaskownicy?
Elementy iframe w piaskownicy to elementy iframe ze specjalnymi ograniczeniami. Są one traktowane jako pochodzące z null,
nieprzezroczystego
źródła. Domyślnie potencjalnie szkodliwe funkcje, takie jak skrypty, formularze i wyskakujące okienka, nie są dostępne w ramach elementów iframe umieszczonych w piaskownicy.
Użyj atrybutu sandbox, aby określić, które funkcje powinny być dostępne w piaskownicy iframe. Na przykład:
<iframe sandbox="allow-scripts" src="example-sandboxed-frame.html"/>
Piaskownica to zawsze dobry pomysł, ponieważ umożliwia szczegółowe wybieranie uprawnień wymaganych do prawidłowego wczytywania treści osadzonych, a jednocześnie ogranicza zakres potencjalnych luk w zabezpieczeniach.
Dlaczego potrzebujemy tych nowych zasad?
Przed wprowadzeniem allow-same-site-none-cookies w elemencie iframe umieszczonym w piaskownicy można było skonfigurować 2 scenariusze dotyczące plików cookie:
- Bez tokena
allow-same-originw atrybuciesandboxźródło elementu iframe jest serializowane jakonull, co sprawia, że wszystkie żądania ze strony w piaskownicy są żądaniami z innej witryny. W tym przypadku w żądaniach będą uwzględniane tylko pliki cookie z wartościąSameSite=None. - W przypadku tokena
allow-same-originw atrybuciesandboxżądania są traktowane jako pochodzące z rzeczywistego źródła elementu iframe, co umożliwia wysyłanie plików cookie z dowolną wartościąSameSite.
Gdy pliki cookie innych firm są zablokowane, ramka iframe w piaskownicy bez atrybutu allow-same-origin nie może wysyłać żadnych plików cookie, chyba że włączysz atrybut allow-same-site-none-cookies.
Element iframe z allow-same-origin będzie nadal mógł uwzględniać pliki cookie w żądaniach pochodzących z tej samej witryny, nawet jeśli pliki cookie innych firm są zablokowane. Jednak cały zasobnik plików cookie pochodzący z danej domeny byłby narażony na potencjalnie szkodliwą aktywność w internecie.
Dzięki allow-same-site-none-cookies ramka iframe może wysyłać w żądaniach HTTP pliki cookie SameSite=None, a potencjalnie poufne pliki cookie SameSite=Strict i SameSite=Lax nie będą uwzględniane.
Praktyczny przykład
Weźmy pod uwagę witrynę practice-coding.example, która umożliwia użytkownikom tworzenie i uruchamianie niestandardowych projektów kodowania oraz osadzanie kodu innych użytkowników. Aby korzystać z usługi, użytkownicy muszą się zalogować, co powoduje ustawienie pliku cookie sesji SameSite=Strict.
Inny użytkownik tworzy projekt practice-coding.example/cookie-theft, który inni użytkownicy mogą nieświadomie osadzić jako element iframe w swoich projektach. Jeśli pliki cookie SameSite=Strict i SameSite=Lax są widoczne w ramce iframe practice-coding.example/cookie-theft, złośliwy użytkownik może ukraść pliki cookie sesji innych użytkowników.
W takim przypadku właściciel witryny może chcieć ograniczyć dostęp do potencjalnie wrażliwych plików cookie. Mogą jednak nadal zezwalać na pliki cookie SameSite=None w ramkach iframe w piaskownicy. Na przykład practice-coding.example/coding-interviewiframe w piaskownicy może wymagaćSameSite=None plików cookie, aby kandydaci mogli ponownie przejrzeć swój kod.
allow-same-site-none-cookies zapobiega ujawnianiu wszystkich plików cookie, a jednocześnie selektywnie zezwala na niezbędne pliki cookie SameSite=None.
Jak zezwolić na SameSite=None tylko w ramach własnych umieszczonych w piaskownicy?
Aby włączyć SameSite=None pliki cookie w żądaniach ze stron piaskownicy własnej domeny, w tagu iframe podaj token allow-same-site-none-cookies. Na przykład:
<iframe sandbox="allow-same-site-none-cookies" src="example-sandboxed-page.html"/>
Możesz też ustawić zasady allow-same-site-none-cookies za pomocą nagłówka HTTP Content-Security-Policy:
Content-Security-Policy: sandbox allow-same-site-none-cookies;
Wypróbuj to na naszej wersji demonstracyjnej.
Angażowanie się i przesyłanie opinii
Zgłoś problem, aby przesłać opinię lub zgłosić problemy, albo dołącz do dyskusji na GitHubie.