Content Security Policy — meta http-equiv
Ustawianie Content Security Policy za pomocą meta http-equiv
Content Security Policy — meta http-equiv to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej HTML Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs HTML Academy zawiera 4 lekcji w sumie.
Czym jest CSP?
Content Security Policy to wymuszana przez przeglądarkę polityka ograniczająca zasoby, które strona może ładować i wykonywać. Jest to najsilniejsza ochrona przed atakami Cross-Site Scripting: nawet jeśli osoba atakująca wstrzyknie znacznik <script>, przeglądarka odmówi jego uruchomienia, chyba że zezwala na to polityka.
Dwa sposoby dostarczania
CSP można wysłać jako nagłówek odpowiedzi HTTP (Content-Security-Policy: ...) albo jako znacznik meta w kodzie HTML: <meta http-equiv="Content-Security-Policy" content="...">. Zalecany jest nagłówek; znacznik meta jest przydatny, gdy nie można kontrolować serwera.
<meta http-equiv="Content-Security-Policy"
content="default-src 'self'; script-src 'self' https://cdn.example.com">Typowe dyrektywy
default-src jest wartością zastępczą dla nieokreślonych typów zasobów. Każda z dyrektyw script-src, style-src, img-src, connect-src (XHR/fetch), font-src i frame-src ogranicza właściwy dla siebie rodzaj zasobów. Należy umieścić na białej liście konkretne originy albo użyć 'self', aby zezwolić wyłącznie na ten sam origin.
Słowo kluczowe self
'self' (w cudzysłowie) oznacza własny origin strony. script-src 'self' oznacza "uruchamiaj wyłącznie skrypty hostowane na tym samym originie co strona". To podstawa większości polityk; w razie potrzeby należy dodać konkretne zewnętrzne CDN-y.
Blokowanie skryptów wbudowanych
Domyślnie CSP blokuje wszystkie wbudowane znaczniki <script> oraz atrybuty obsługi zdarzeń (onclick). To najsilniejsza ochrona przed XSS: wstrzyknięty znacznik <script> nie może się uruchomić, ponieważ jest wbudowany. Należy przenieść wszystkie skrypty do zewnętrznych plików wskazywanych przez src.
Nonce i skróty
W przypadku koniecznych skryptów wbudowanych należy użyć nonce: serwer generuje losowy token dla każdego żądania, ustawia go jako script-src 'nonce-RANDOM' w CSP i dodaje nonce="RANDOM" do prawidłowych znaczników <script>. Wstrzykniętym skryptom brakuje nonce, więc są blokowane.
<meta http-equiv="Content-Security-Policy"
content="script-src 'nonce-abc123'">
<script nonce="abc123">// allowed</script>
<script>// blocked — no nonce</script>unsafe-inline i unsafe-eval
'unsafe-inline' ponownie zezwala na skrypty i style wbudowane. 'unsafe-eval' ponownie zezwala na eval() i new Function(). Obie opcje znacznie osłabiają CSP — należy używać ich wyłącznie w ostateczności podczas migracji i zaplanować ich usunięcie.
Ograniczenia znacznika meta
CSP dostarczane za pomocą znacznika meta nie może używać dyrektywy report-uri ani innych funkcji raportowania. Zaczyna też obowiązywać później niż nagłówek — wszystko przed znacznikiem meta pozostaje niechronione. Nagłówki są zdecydowanie lepsze; znacznika meta należy używać tylko awaryjnie.
Tryb tylko raportowania
Nową politykę można przetestować bez ryzyka uszkodzenia witryny: Content-Security-Policy-Report-Only: .... Przeglądarka zgłasza naruszenia, ale ich nie blokuje, dzięki czemu można dopracować politykę tak, aby zezwalała na wszystkie prawidłowe zasoby, zanim zostanie włączone egzekwowanie.
Typowe pułapki
Pominięcie style-src 'unsafe-inline' blokuje style wbudowane (często generowane przez frameworki). Pominięcie connect-src blokuje żądania AJAX do API. Zawsze należy najpierw przetestować politykę w trybie tylko raportowania i sprawdzić w konsoli, które zasoby zostały zablokowane.
Nowoczesna strategia CSP
Rygorystyczna polityka CSP łączy script-src 'nonce-RANDOM' 'strict-dynamic' dla skryptów z dokładną białą listą wszystkich pozostałych zasobów. 'strict-dynamic' pozwala skryptom z nonce ładować kolejne skrypty bez wymieniania każdego z nich — jest to znacznie łatwiejsze w utrzymaniu niż białe listy poszczególnych originów.
Sprawdzenie wiedzy
W jaki sposób CSP chroni przed atakami XSS, nawet gdy osoba atakująca skutecznie wstrzyknie znacznik script?
Podsumowanie
CSP to wymuszana przez przeglądarkę polityka ograniczająca skrypty, style, obrazy i inne zasoby, które mogą zostać załadowane. Należy dostarczać ją za pomocą nagłówka odpowiedzi (zalecane) albo znacznika meta. W przypadku potrzebnych skryptów wbudowanych należy używać nonce, unikać unsafe-inline i unsafe-eval oraz najpierw testować politykę w trybie tylko raportowania. Rygorystyczna polityka CSP z 'nonce-X' 'strict-dynamic' stanowi współczesną podstawę bezpieczeństwa.
Często zadawane pytania
Czy lekcja „Content Security Policy — meta http-equiv” jest bezpłatna?
Tak — pełny tekst „Content Security Policy — meta http-equiv” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu HTML Academy, przejdź na CoddyKit PRO. Kurs HTML Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Content Security Policy — meta http-equiv”?
Ustawianie Content Security Policy za pomocą meta http-equiv Ćwiczysz HTML Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć HTML Academy?
Nie wymagamy żadnego doświadczenia. HTML Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Content Security Policy — meta http-equiv”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji HTML Academy?
Tak. Każda lekcja HTML Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Content Security Policy — meta http-equiv
- XSS przez innerHTML i zapobieganie atakom
- Sandbox iframe i Permissions Policy
- HTTPS i Subresource Integrity