Dowiedz się więcej o nagłówkach, które mogą chronić Twoją witrynę, i szybko wyszukuj najważniejsze informacje.
W tym artykule znajdziesz listę najważniejszych nagłówków zabezpieczeń, których możesz użyć do ochrony swojej witryny. Korzystaj z niej, aby poznać funkcje zabezpieczeń internetowych i dowiedzieć się, jak je wdrożyć w swojej witrynie. Możesz też do niej wracać, gdy będziesz potrzebować przypomnienia.
- Nagłówki zabezpieczeń zalecane w przypadku witryn, które przetwarzają dane wrażliwe użytkowników:
- Content Security Policy (CSP)
- Trusted Types
- Nagłówki zabezpieczeń zalecane w przypadku wszystkich witryn:
- X-Content-Type-Options
- X-Frame-Options
- Cross-Origin Resource Policy (CORP)
- Cross-Origin Opener Policy (COOP)
- HTTP Strict Transport Security (HSTS)
- Nagłówki zabezpieczeń w przypadku witryn o zaawansowanych możliwościach:
- Współdzielenie zasobów pomiędzy serwerami z różnych domen (CORS)
- Zasady osadzania z różnych domen (COEP)
Zanim przejdziesz do nagłówków bezpieczeństwa, dowiedz się więcej o znanych zagrożeniach w internecie i o tym, dlaczego warto używać tych nagłówków.
Ochrona witryny przed lukami w zabezpieczeniach związanymi z wstrzykiwaniem kodu
Luki w zabezpieczeniach związane z wstrzykiwaniem pojawiają się, gdy niezaufane dane przetwarzane przez aplikację mogą wpływać na jej działanie i zwykle prowadzą do uruchomienia skryptów kontrolowanych przez osobę przeprowadzającą atak. Najczęstszą luką w zabezpieczeniach spowodowaną przez błędy wstrzykiwania jest skryptowanie między witrynami (XSS) w różnych formach, w tym odzwierciedlony XSS, przechowywany XSS, XSS oparty na DOM i inne warianty.
Luka w zabezpieczeniach XSS może zwykle zapewnić atakującemu pełny dostęp do danych użytkownika przetwarzanych przez aplikację i wszelkich innych informacji hostowanych w tym samym pochodzeniu internetowym.
Tradycyjne metody ochrony przed atakami typu injection obejmują konsekwentne stosowanie systemów szablonów HTML z automatycznym unikaniem znaków specjalnych, unikanie niebezpiecznych interfejsów JavaScript API oraz prawidłowe przetwarzanie danych użytkowników przez hostowanie przesyłanych plików w osobnej domenie i oczyszczanie kontrolowanego przez użytkownika kodu HTML.
- Używaj standardu Content Security Policy (CSP), aby kontrolować, które skrypty mogą być wykonywane przez aplikację, i zmniejszać ryzyko wstrzyknięć.
- Używaj Trusted Types, aby wymuszać czyszczenie danych przekazywanych do niebezpiecznych interfejsów JavaScript API.
- Użyj X-Content-Type-Options, aby zapobiec błędnej interpretacji przez przeglądarkę typów MIME zasobów witryny, co może prowadzić do wykonania skryptu.
Izolowanie witryny od innych witryn
Otwartość internetu umożliwia witrynom wchodzenie ze sobą w interakcje w sposób, który może naruszać oczekiwania aplikacji dotyczące bezpieczeństwa. Może to obejmować nieoczekiwane wysyłanie uwierzytelnionych żądań lub osadzanie danych z innej aplikacji w dokumencie osoby przeprowadzającej atak, co umożliwia jej modyfikowanie lub odczytywanie danych aplikacji.
Typowe luki w zabezpieczeniach, które podważają izolację witryn, to clickjacking, fałszowanie żądań z innych witryn (CSRF), ataki typu cross-site script inclusion (XSSI) i różne wycieki danych z innych witryn.
- Użyj X-Frame-Options, aby zapobiec osadzaniu dokumentów w złośliwej witrynie.
- Użyj zasad dotyczących zasobów z innych domen (CORP), aby zapobiec włączaniu zasobów Twojej witryny przez witrynę z innej domeny.
- Użyj zasad dotyczących otwierającego z innej domeny (COOP), aby chronić okna witryny przed interakcjami ze złośliwymi witrynami.
- Użyj współdzielenia zasobów pomiędzy serwerami z różnych domen (CORS), aby kontrolować dostęp do zasobów witryny z dokumentów z innych domen.
Jeśli interesują Cię te nagłówki, warto przeczytać artykuł Post-Spectre Web Development.
Bezpieczne tworzenie zaawansowanych witryn
Spectre umieszcza wszystkie wczytane dane w tej samej grupie kontekstu przeglądania, co potencjalnie umożliwia ich odczytanie pomimo zasad dotyczących tego samego pochodzenia. Przeglądarki ograniczają funkcje, które mogą wykorzystywać lukę w zabezpieczeniach w specjalnym środowisku zwanym „izolacją z różnych źródeł”. Dzięki izolacji między źródłami możesz korzystać z zaawansowanych funkcji, takich jak SharedArrayBuffer.
- Używaj zasad umieszczania zasobów z innych domen (COEP) wraz z COOP, aby włączyć izolowanie z innych domen.
Szyfrowanie ruchu w witrynie
Problemy z szyfrowaniem pojawiają się, gdy aplikacja nie szyfruje w pełni danych podczas przesyłania, co umożliwia atakującym podsłuchiwanie interakcji użytkownika z aplikacją.
Niewystarczające szyfrowanie może wystąpić w tych przypadkach: nieużywanie protokołu HTTPS, treści mieszane, ustawianie plików cookie bez atrybutu Secure (lub prefiksu __Secure) albo nieścisła logika weryfikacji CORS.
- Używaj HTTP Strict Transport Security (HSTS), aby konsekwentnie wyświetlać treści za pomocą protokołu HTTPS.
Content Security Policy (CSP)
Cross-site scripting (XSS) to atak, w którym luka w zabezpieczeniach witryny umożliwia wstrzyknięcie i wykonanie złośliwego skryptu.
Content-Security-Policy stanowi dodatkową warstwę zabezpieczeń przed atakami XSS, ponieważ ogranicza skrypty, które mogą być wykonywane na stronie.
Zalecamy włączenie ścisłej zasady CSP za pomocą jednej z tych metod:
- Jeśli renderujesz strony HTML na serwerze, użyj ścisłego CSP opartego na jednorazowym kodzie.
- Jeśli kod HTML musi być dostarczany statycznie lub buforowany, np. w przypadku aplikacji jednostronicowej, użyj ścisłej zasady CSP opartej na haszowaniu.
Przykład użycia: CSP oparty na jednorazowym kodzie
Content-Security-Policy:
script-src 'nonce-{RANDOM1}' 'strict-dynamic' https: 'unsafe-inline';
object-src 'none';
base-uri 'none';
Zalecane zastosowania
1. Używanie ścisłej strategii CSP opartej na jednorazowym kodzie {: #nonce-based-csp}
Jeśli renderujesz strony HTML na serwerze, użyj ścisłego CSP opartego na jednorazowym kodzie.
Wygeneruj nową wartość nonce skryptu dla każdego żądania po stronie serwera i ustaw ten nagłówek:
plik konfiguracyjny serwera,
Content-Security-Policy: script-src 'nonce-{RANDOM1}' 'strict-dynamic' https: 'unsafe-inline'; object-src 'none'; base-uri 'none';
Aby wczytać skrypty w HTML, ustaw atrybut nonce wszystkich tagów <script> na ten sam ciąg znaków {RANDOM1}.
index.html
<script nonce="{RANDOM1}" src="https://example.com/script1.js"></script>
<script nonce="{RANDOM1}">
// Inline scripts can be used with the <code>nonce</code> attribute.
</script>Zdjęcia Google to dobry przykład ścisłej strategii CSP opartej na jednorazowym kodzie. Użyj Narzędzi deweloperskich, aby sprawdzić, jak jest używany.
2. Używanie rygorystycznej zasady CSP opartej na haszowaniu {: #hash-based-csp}
Jeśli Twój kod HTML musi być wyświetlany statycznie lub buforowany, np. w przypadku tworzenia aplikacji jednostronicowej, użyj ścisłej strategii CSP opartej na haszowaniu.
plik konfiguracyjny serwera,
Content-Security-Policy: script-src 'sha256-{HASH1}' 'sha256-{HASH2}' 'strict-dynamic' https: 'unsafe-inline'; object-src 'none'; base-uri 'none';
W HTML-u musisz wstawić skrypty w kodzie, aby zastosować zasady oparte na haszowaniu, ponieważ większość przeglądarek nie obsługuje haszowania zewnętrznych skryptów.
index.html
<script> ...// your script1, inlined </script> <script> ...// your script2, inlined </script>
Aby wczytać skrypty zewnętrzne, przeczytaj sekcję „Dynamiczne wczytywanie skryptów źródłowych” w części Opcja B. Nagłówek odpowiedzi CSP oparty na haszowaniu.
CSP Evaluator to dobre narzędzie do oceny CSP, a zarazem dobry przykład rygorystycznych CSP opartych na identyfikatorze liczby jednorazowej. Użyj Narzędzi deweloperskich, aby sprawdzić, jak jest używany.
Obsługiwane przeglądarki
Inne informacje o CSP
frame-ancestorsdyrektywa chroni witrynę przed clickjackingiem, czyli zagrożeniem, które pojawia się, gdy zezwalasz niezaufanym witrynom na osadzanie Twojej witryny. Jeśli wolisz prostsze rozwiązanie, możesz użyć elementuX-Frame-Options, aby zablokować ładowanie, aleframe-ancestorszapewnia zaawansowaną konfigurację, która pozwala zezwalać na osadzanie tylko w przypadku określonych domen.- Możesz użyć CSP, aby mieć pewność, że wszystkie zasoby witryny są wczytywane przez HTTPS. To stało się mniej istotne: obecnie większość przeglądarek blokuje treści mieszane.
- Możesz też skonfigurować CSP w trybie tylko do raportowania.
- Jeśli nie możesz ustawić CSP jako nagłówka po stronie serwera, możesz też ustawić go jako metatag. Pamiętaj, że w przypadku metatagów nie możesz używać trybu tylko raportowanie (może się to jednak zmienić).
Więcej informacji
Zaufane typy
Atak XSS oparty na DOM polega na przekazaniu złośliwych danych do miejsca docelowego, które obsługuje dynamiczne wykonywanie kodu, np. eval() lub .innerHTML.
Trusted Types udostępnia narzędzia do pisania, sprawdzania pod kątem bezpieczeństwa i utrzymywania aplikacji wolnych od ataków typu XSS opartych na DOM. Można je włączyć za pomocą CSP. Zapewniają one domyślne bezpieczeństwo kodu JavaScript, ograniczając niebezpieczne interfejsy API do akceptowania tylko specjalnego obiektu – zaufanego typu.
Aby utworzyć te obiekty, możesz zdefiniować zasady bezpieczeństwa, które zapewnią spójne stosowanie reguł bezpieczeństwa (takich jak usuwanie znaków specjalnych lub oczyszczanie) przed zapisaniem danych w DOM. Te zasady są jedynymi miejscami w kodzie, które mogą potencjalnie wprowadzić DOM XSS.
Przykłady użycia
Content-Security-Policy: require-trusted-types-for 'script'
// Feature detection
if (window.trustedTypes && trustedTypes.createPolicy) {
// Name and create a policy
const policy = trustedTypes.createPolicy('escapePolicy', {
createHTML: str => {
return str.replace(/\</g, '<').replace(/>/g, '>');
}
});
}
// Assignment of raw strings is blocked by Trusted Types.
el.innerHTML = 'some string'; // This throws an exception.
// Assignment of Trusted Types is accepted safely.
const escaped = policy.createHTML('<img src=x onerror=alert(1)>');
el.innerHTML = escaped; // '&lt;img src=x onerror=alert(1)&gt;'
Zalecane zastosowania
-
Wymuszanie zaufanych typów w przypadku niebezpiecznych elementów DOM Nagłówek CSP i Trusted Types:
Content-Security-Policy: require-trusted-types-for 'script'Obecnie jedyną akceptowaną wartością dyrektywy
require-trusted-types-forjest'script'.Oczywiście możesz łączyć zaufane typy z innymi dyrektywami CSP:
Łączenie powyższej strategii CSP opartej na jednorazowym kodzie z dyrektywą Trusted Types:
Content-Security-Policy:
script-src 'nonce-{RANDOM1}' 'strict-dynamic' https: 'unsafe-inline';
object-src 'none';
base-uri 'none';
require-trusted-types-for 'script';
<aside class="note"><b>Uwaga: </b> możesz ograniczyć dozwolone nazwy zasad zaufanych typów, ustawiając dodatkową dyrektywę <code>trusted-types</code> (np. <code>trusted-types myPolicy</code>). Nie jest to jednak wymagane. </aside>
-
Definiowanie zasady
Zasady:
// Feature detection if (window.trustedTypes && trustedTypes.createPolicy) { // Name and create a policy const policy = trustedTypes.createPolicy('escapePolicy', { createHTML: str => { return str.replace(/\/g, '>'); } }); }
-
Stosowanie zasad
Używaj zasady podczas zapisywania danych w DOM:
// Assignment of raw strings are blocked by Trusted Types. el.innerHTML = 'some string'; // This throws an exception.</p> <p>// Assignment of Trusted Types is accepted safely. const escaped = policy.createHTML('<img src="x" onerror="alert(1)">'); el.innerHTML = escaped; // '<img src=x onerror=alert(1)>'
W przypadku
require-trusted-types-for 'script'używanie zaufanego typu jest wymagane. Użycie dowolnego niebezpiecznego interfejsu DOM API z ciągiem znaków spowoduje błąd.
Obsługiwane przeglądarki
Więcej informacji
- Zapobieganie lukom w zabezpieczeniach typu cross-site scripting opartym na DOM przy użyciu dyrektywy Trusted Types
- CSP: require-trusted-types-for - HTTP | MDN
- CSP: trusted-types - HTTP | MDN
- Wersja demonstracyjna Trusted Types – otwórz inspektora Narzędzi deweloperskich i zobacz, co się dzieje.
X-Content-Type-Options
Gdy z Twojej domeny zostanie wyświetlony złośliwy dokument HTML (np. jeśli obraz przesłany do usługi zdjęć zawiera prawidłowy znacznik HTML), niektóre przeglądarki potraktują go jako aktywny dokument i pozwolą mu wykonywać skrypty w kontekście aplikacji, co doprowadzi do błędu związanego z cross-site scriptingiem.
X-Content-Type-Options: nosniff zapobiega temu, informując przeglądarkę, że typ MIME ustawiony w nagłówku Content-Type dla danej odpowiedzi jest prawidłowy. Ten nagłówek jest zalecany w przypadku wszystkich zasobów.
Przykładowe użycie
X-Content-Type-Options: nosniff
Zalecane zastosowania
X-Content-Type-Options: nosniff jest zalecany w przypadku wszystkich zasobów wyświetlanych z serwera wraz z prawidłowym nagłówkiem Content-Type.
Przykładowe nagłówki wysłane z dokumentem HTML
X-Content-Type-Options: nosniff Content-Type: text/html; charset=utf-8
Obsługiwane przeglądarki
Więcej informacji
X-Frame-Options
Jeśli złośliwa witryna może osadzić Twoją witrynę jako ramkę iframe, może to umożliwić atakującym wywoływanie niezamierzonych działań użytkownika za pomocą clickjackingu. W niektórych przypadkach ataki typu Spectre dają złośliwym witrynom możliwość poznania zawartości umieszczonego dokumentu.
X-Frame-Options określa, czy przeglądarka powinna mieć możliwość renderowania strony w <frame>, <iframe>, <embed> lub <object>. Wszystkie dokumenty powinny wysyłać ten nagłówek, aby wskazać, czy zezwalają na osadzanie w innych dokumentach.
Przykładowe użycie
X-Frame-Options: DENY
Zalecane zastosowania
Wszystkie dokumenty, które nie są przeznaczone do umieszczania, powinny używać nagłówka X-Frame-Options.
Możesz sprawdzić, jak te konfiguracje wpływają na wczytywanie elementu iframe w tym
demo. Zmień menu X-Frame-Options
i kliknij przycisk Odśwież element iframe.
Ochrona witryny przed osadzaniem w innych witrynach
Odmów osadzania w innych dokumentach.
X-Frame-Options: DENYChroni witrynę przed osadzaniem przez inne witryny
Zezwalaj na umieszczanie tylko w dokumentach z tej samej domeny.
X-Frame-Options: SAMEORIGINObsługiwane przeglądarki
Więcej informacji
Zasady dotyczące zasobów z innych domen (CORP)
Osoba atakująca może umieścić zasoby z innego źródła, np. z Twojej witryny, aby uzyskać o nich informacje, wykorzystując wycieki danych z innych witryn.
Cross-Origin-Resource-Policy zmniejsza to ryzyko, wskazując zestaw witryn, w których może być wczytywany. Nagłówek przyjmuje jedną z 3 wartości: same-origin, same-site i cross-origin. Wszystkie zasoby powinny wysyłać ten nagłówek, aby wskazać, czy zezwalają na wczytywanie przez inne witryny.
Przykładowe użycie
Cross-Origin-Resource-Policy: same-origin
Zalecane zastosowania
Zalecamy, aby wszystkie zasoby były wyświetlane z użyciem jednego z tych 3 nagłówków.
Możesz sprawdzić, jak te konfiguracje wpływają na wczytywanie zasobów w środowisku Cross-Origin-Embedder-Policy: require-corp na tej wersji demonstracyjnej. Zmień menu Cross-Origin-Resource-Policy i kliknij przycisk Ponownie załaduj element iframe lub Ponownie załaduj obraz, aby zobaczyć efekt.
Zezwalaj na ładowanie zasobów cross-origin
Zalecamy, aby usługi podobne do CDN stosowały atrybut cross-origin do zasobów (ponieważ są one zwykle wczytywane przez strony z innych domen), chyba że są już dostarczane za pomocą CORS, co ma podobny efekt.
Cross-Origin-Resource-Policy: cross-originOgranicz zasoby do załadowania z same-origin
Atrybut same-origin należy stosować do zasobów, które mają być wczytywane tylko przez strony z tej samej domeny. Należy stosować to ustawienie w przypadku zasobów, które zawierają informacje wrażliwe o użytkowniku, lub odpowiedzi interfejsu API, który ma być wywoływany tylko z tego samego źródła.
Pamiętaj, że zasoby z tym nagłówkiem nadal można wczytywać bezpośrednio, np. otwierając adres URL w nowym oknie przeglądarki. Zasady dotyczące zasobów z innych domen chronią tylko przed osadzaniem zasobów w innych witrynach.
Cross-Origin-Resource-Policy: same-originOgranicz zasoby do załadowania z same-site
same-site zaleca się stosować w przypadku zasobów podobnych do powyższych, ale przeznaczonych do wczytywania przez inne subdomeny witryny.
Cross-Origin-Resource-Policy: same-siteObsługiwane przeglądarki
Więcej informacji
Zasady dotyczące otwierającego z innej domeny (COOP)
Witryna osoby przeprowadzającej atak może otworzyć inną witrynę w wyskakującym okienku, aby uzyskać informacje na jej temat, wykorzystując internetowe wycieki danych z innych witryn. W niektórych przypadkach może to również umożliwić wykorzystanie ataków na kanały boczne opartych na Spectre.
Nagłówek Cross-Origin-Opener-Policy umożliwia dokumentowi odizolowanie się od okien z innych domen otwieranych za pomocą window.open() lub linku z atrybutem target="_blank" bez atrybutu rel="noopener". W rezultacie otwierające dokument okno z innej domeny nie będzie miało do niego odwołania i nie będzie mogło z nim wchodzić w interakcje.
Przykładowe użycie
Cross-Origin-Opener-Policy: same-origin-allow-popups
Zalecane zastosowania
Możesz sprawdzić, jak te konfiguracje wpływają na komunikację z wyskakującym okienkiem z innej domeny, korzystając z tej wersji demonstracyjnej. Zmień ustawienie w menu Cross-Origin-Opener-Policy zarówno w przypadku dokumentu, jak i wyskakującego okienka. Kliknij przycisk Otwórz wyskakujące okienko, a potem Wyślij postMessage, aby sprawdzić, czy wiadomość została dostarczona.
Izolowanie dokumentu od okien z innych domen
Ustawienie same-origin powoduje, że dokument jest izolowany od okien dokumentów z innych domen.
Cross-Origin-Opener-Policy: same-originIzolowanie dokumentu od okien z innej domeny, ale zezwalanie na wyskakujące okienka
Ustawienie same-origin-allow-popups pozwala dokumentowi zachować odniesienie do wyskakujących okienek, chyba że ustawiono COOP z wartością same-origin lub same-origin-allow-popups. Oznacza to, że same-origin-allow-popups nadal może chronić dokument przed odwoływaniem się do niego, gdy jest otwierany w wyskakującym okienku, ale zezwalać na komunikację z własnymi wyskakującymi okienkami.
Cross-Origin-Opener-Policy: same-origin-allow-popupsZezwalaj na odwoływanie się do dokumentu przez okna z innych domen
unsafe-none to wartość domyślna, ale możesz wyraźnie wskazać, że ten dokument może być otwierany przez okno z innej domeny i zachowywać wzajemny dostęp.
Cross-Origin-Opener-Policy: unsafe-noneZgłaszanie wzorców niezgodnych z COOP
Możesz otrzymywać raporty, gdy COOP uniemożliwia interakcje między oknami z interfejsem API do raportowania.
Cross-Origin-Opener-Policy: same-origin; report-to="coop"COOP obsługuje też tryb tylko do raportowania, dzięki czemu możesz otrzymywać raporty bez blokowania komunikacji między dokumentami z różnych domen.
Cross-Origin-Opener-Policy-Report-Only: same-origin; report-to="coop"Obsługiwane przeglądarki
Więcej informacji
Współdzielenie zasobów pomiędzy serwerami z różnych domen (CORS)
W przeciwieństwie do innych elementów w tym artykule mechanizm CORS (Cross-Origin Resource Sharing) nie jest nagłówkiem, ale mechanizmem przeglądarki, który żąda dostępu do zasobów z innych domen i na niego zezwala.
Domyślnie przeglądarki egzekwują zasadę tego samego pochodzenia, aby uniemożliwić stronie internetowej dostęp do zasobów z innej domeny. Na przykład gdy załadowany jest obraz z innej domeny, mimo że jest on wyświetlany na stronie internetowej, JavaScript na tej stronie nie ma dostępu do danych obrazu. Dostawca zasobu może złagodzić ograniczenia i umożliwić innym witrynom odczytywanie zasobu, akceptując CORS.
Przykładowe użycie
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Credentials: true
Zanim dowiesz się, jak skonfigurować CORS, warto poznać różnicę między typami żądań. W zależności od szczegółów żądania zostanie ono zaklasyfikowane jako proste żądanie lub żądanie wstępne.
Kryteria prostego żądania:
- Metoda to
GET,HEADlubPOST. - Niestandardowe nagłówki obejmują tylko
Accept,Accept-Language,Content-LanguageiContent-Type. - Wartość
Content-Typetoapplication/x-www-form-urlencoded,multipart/form-datalubtext/plain.
Wszystkie pozostałe żądania są klasyfikowane jako żądania wstępne. Więcej informacji znajdziesz w artykule Współdzielenie zasobów pomiędzy serwerami z różnych domen (CORS) – HTTP | MDN.
Zalecane zastosowania
Proste żądanie
Gdy żądanie spełnia kryteria prostego żądania, przeglądarka wysyła żądanie z innej domeny z nagłówkiem Origin, który wskazuje origin żądania.
Przykładowy nagłówek żądania
Get / HTTP/1.1 Origin: https://example.com
Przykładowy nagłówek odpowiedzi
Access-Control-Allow-Origin: https://example.com Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://example.comoznacza, żehttps://example.comma dostęp do zawartości odpowiedzi. Zasoby, które mają być czytelne dla dowolnej witryny, mogą ustawić ten nagłówek na wartość*. W takim przypadku przeglądarka będzie wymagać, aby żądanie było wysyłane bez danych logowania.- Symbol
Access-Control-Allow-Credentials: trueoznacza, że żądania zawierające dane logowania (pliki cookie) mogą wczytywać zasób. W przeciwnym razie uwierzytelnione żądania będą odrzucane, nawet jeśli źródło żądania jest obecne w nagłówkuAccess-Control-Allow-Origin.
Możesz sprawdzić, jak proste żądanie wpływa na wczytywanie zasobów w Cross-Origin-Embedder-Policy: require-corpśrodowisku na tej wersji demonstracyjnej. Zaznacz pole wyboru mechanizm CORS i kliknij przycisk Reload the image (Ponownie załaduj obraz), aby zobaczyć efekt.
Żądania wstępne
Żądanie wstępne jest poprzedzone żądaniem OPTIONS, które sprawdza, czy można wysłać kolejne żądanie.
Przykładowy nagłówek żądania
OPTIONS / HTTP/1.1 Origin: https://example.com Access-Control-Request-Method: POST Access-Control-Request-Headers: X-PINGOTHER, Content-Type
Access-Control-Request-Method: POSTumożliwia wysłanie tego żądania za pomocą metodyPOST.Access-Control-Request-Headers: X-PINGOTHER, Content-Typeumożliwia osobie wysyłającej żądanie ustawienie nagłówków HTTPX-PINGOTHERiContent-Typew kolejnym żądaniu.
Przykładowe nagłówki odpowiedzi
Access-Control-Allow-Origin: https://example.com Access-Control-Allow-Credentials: true Access-Control-Allow-Methods: POST, GET, OPTIONS Access-Control-Allow-Headers: X-PINGOTHER, Content-Type Access-Control-Max-Age: 86400
Access-Control-Allow-Methods: POST, GET, OPTIONSoznacza, że kolejne żądania można wysyłać za pomocą metodPOST,GETiOPTIONS.Access-Control-Allow-Headers: X-PINGOTHER, Content-Typeoznacza, że kolejne żądania mogą zawierać nagłówkiX-PINGOTHERiContent-Type.Access-Control-Max-Age: 86400oznacza, że wynik żądania wstępnego może być przechowywany w pamięci podręcznej przez 86 400 sekund.
Obsługiwane przeglądarki
Więcej informacji
Zasady umieszczania zasobów z innych domen (COEP)
Aby ograniczyć możliwość ataków opartych na Spectre w celu kradzieży zasobów z innych domen, funkcje takie jak SharedArrayBuffer czy performance.measureUserAgentSpecificMemory() są domyślnie wyłączone.
Cross-Origin-Embedder-Policy: require-corp uniemożliwia dokumentom i procesom wczytywanie zasobów z innej domeny, takich jak obrazy, skrypty, arkusze stylów, elementy iframe i inne, chyba że te zasoby wyraźnie zezwalają na wczytywanie za pomocą nagłówków CORS lub CORP. COEP można połączyć zCross-Origin-Opener-Policy
aby włączyć w dokumencie izolację z innych domen.
Użyj Cross-Origin-Embedder-Policy: require-corp, jeśli chcesz włączyć izolację od zasobów z innych domen w dokumencie.
Przykładowe użycie
Cross-Origin-Embedder-Policy: require-corp
Przykłady użycia
COEP przyjmuje jedną wartość require-corp. Wysyłając ten nagłówek, możesz poinstruować przeglądarkę, aby blokowała wczytywanie zasobów, które nie zostały zaakceptowane za pomocą CORS lub CORP.
Możesz sprawdzić, jak te konfiguracje wpływają na wczytywanie zasobów, korzystając z tej wersji demonstracyjnej. Zmień menu Cross-Origin-Embedder-Policy, menu Cross-Origin-Resource-Policy, pole wyboru Report Only itp., aby zobaczyć, jak wpływają one na wczytywanie zasobów. Otwórz też demo punktu końcowego raportowania, aby sprawdzić, czy zablokowane zasoby są zgłaszane.
Włącz izolację między domenami
Włącz izolację zasobów z różnych domen, wysyłając Cross-Origin-Embedder-Policy: require-corp wraz z Cross-Origin-Opener-Policy: same-origin.
Cross-Origin-Embedder-Policy: require-corp Cross-Origin-Opener-Policy: same-origin
Zgłaszanie zasobów niezgodnych z COEP
Za pomocą interfejsu Reporting API możesz otrzymywać raporty o zablokowanych zasobach z powodu COEP.
Cross-Origin-Embedder-Policy: require-corp; report-to="coep"COEP obsługuje też tryb tylko do raportowania, dzięki czemu możesz otrzymywać raporty bez blokowania ładowania zasobów.
Cross-Origin-Embedder-Policy-Report-Only: require-corp; report-to="coep"Obsługiwane przeglądarki
Więcej informacji
HTTP Strict Transport Security (HSTS)
Komunikacja za pomocą zwykłego połączenia HTTP nie jest szyfrowana, co sprawia, że przesyłane dane są dostępne dla osób podsłuchujących na poziomie sieci.
Nagłówek Strict-Transport-Security informuje przeglądarkę, że nigdy nie powinna wczytywać witryny za pomocą protokołu HTTP, tylko HTTPS. Po ustawieniu tego nagłówka przeglądarka będzie używać protokołu HTTPS zamiast HTTP, aby uzyskać dostęp do domeny bez przekierowania przez czas określony w nagłówku.
Przykładowe użycie
Strict-Transport-Security: max-age=31536000
Zalecane zastosowania
Wszystkie witryny, które przechodzą z HTTP na HTTPS, powinny odpowiadać nagłówkiem Strict-Transport-Security, gdy otrzymają żądanie HTTP.
Strict-Transport-Security: max-age=31536000Obsługiwane przeglądarki