Polityka bezpieczeństwa treści ( CSP ) to dodatkowa warstwa zabezpieczeń, która pomaga wykrywać i łagodzić niektóre rodzaje ataków, w tym Cross Site Scripting ( XSS ) i ataki wstrzykiwania danych. Ataki te są wykorzystywane do wszystkiego, od kradzieży danych po defragmentację witryny i dystrybucję złośliwego oprogramowania.
CSP ma być w pełni kompatybilny wstecz (z wyjątkiem CSP wersji 2, gdzie znajdują się niektóre wyraźnie wymienione niespójności w kompatybilności wstecznej, więcej szczegółów tutaj sekcja 1.1). Przeglądarki, które go nie obsługują, nadal działają z serwerami, które go implementują, i odwrotnie: przeglądarki, które nie obsługują CSP, po prostu go ignorują, działając jak zwykle, domyślnie stosując standardową politykę tego samego pochodzenia dla treści internetowych. Jeśli witryna nie oferuje nagłówka CSP, przeglądarki również korzystają ze standardowej zasady tego samego pochodzenia .
Aby włączyć CSP, musisz skonfigurować swój serwer WWW, aby Content-Security-Policyzwracał nagłówek HTTP (czasami zobaczysz wzmianki o X-Content-Security-Policynagłówku, ale to jest starsza wersja i nie musisz już jej określać).
Alternatywnie, <meta>element może być użyty do skonfigurowania polityki, na przykład:<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src https://*; child-src 'none';">
Zagrożeńa
Ograniczanie sekcji skryptów krzyżowych
Podstawowym celem CSP jest łagodzenie i raportowanie ataków XSS. Ataki XSS wykorzystują zaufanie przeglądarki do treści otrzymywanych z serwera. Złośliwe skrypty są wykonywane przez przeglądarkę ofiary, ponieważ przeglądarka ufa źródłu treści, nawet jeśli nie pochodzi z miejsca, z którego wydaje się pochodzić.
CSP umożliwia administratorom serwerów zmniejszenie lub wyeliminowanie wektorów, w których XSS może wystąpić, poprzez określenie domen, które przeglądarka powinna uznać za prawidłowe źródła wykonywalnych skryptów. Przeglądarka zgodna z CSP wykona wtedy tylko skrypty załadowane w plikach źródłowych otrzymanych z tych domen, ignorując wszystkie inne skrypty (w tym skrypty wbudowane i atrybuty HTML obsługi zdarzeń).
Jako ostateczna forma ochrony witryny, które nigdy nie pozwalają na wykonywanie skryptów, mogą zdecydować się na globalne uniemożliwienie wykonywania skryptów.
Łagodzenie ataków wąchania pakietów Sekcja
Oprócz ograniczania domen, z których można ładować zawartość, serwer może określić, które protokoły mogą być używane; na przykład (a najlepiej z punktu widzenia bezpieczeństwa) serwer może określić, że cała zawartość musi być załadowana przy użyciu HTTPS. Pełna strategia bezpieczeństwa transmisji danych obejmuje nie tylko wymuszanie HTTPS w celu przesyłania danych, ale także oznaczanie wszystkich plików cookie bezpieczną flagą i automatyczne przekierowywanie ze stron HTTP do ich odpowiedników HTTPS. Witryny mogą również używać Strict-Transport-Securitynagłówka HTTP, aby zapewnić, że przeglądarki łączą się z nimi tylko za pośrednictwem szyfrowanego kanału .
Korzystanie z sekcji CSP
Konfigurowanie zasad bezpieczeństwa treści polega na dodaniu Content-Security-Policynagłówka HTTP do strony internetowej i nadaniu mu wartości do kontrolowania zasobów, które agent użytkownika może załadować dla tej strony. Na przykład strona, która przesyła i wyświetla obrazy, może zezwalać na obrazy z dowolnego miejsca, ale ograniczyć akcję formularza do określonego punktu końcowego. Odpowiednio zaprojektowana polityka bezpieczeństwa treści pomaga chronić stronę przed atakiem typu cross site scripting. W tym artykule wyjaśniono, jak prawidłowo zbudować takie nagłówki i podano przykłady.
Określanie sekcji polityki
Możesz użyć Content-Security-Policynagłówka HTTP, aby określić swoją politykę, jak poniżej:
Polityka bezpieczeństwa treści: polityka
Zasada jest ciągiem zawierającym wytyczne dotyczące polityki opisujące politykę bezpieczeństwa treści.
Pisanie sekcji zasad
Polityka jest opisana za pomocą szeregu dyrektyw politycznych, z których każda opisuje politykę dla określonego typu zasobu lub obszaru polityki. Twoja zasada powinna zawierać default-srcdyrektywę dotyczącą zasad, która jest rezerwą dla innych typów zasobów, gdy nie mają własnych zasad (pełna lista znajduje się w opisie default-srcdyrektywy). Polityka musi zawierać default-srclub script-srcdyrektywę, aby zapobiec uruchamianiu skryptów wbudowanych, a także blokować korzystanie z eval(). Strategia musi zawierać dyrektywę default-srclub style-srcdyrektywę, aby ograniczyć stosowanie stylów wstawianych z <style>elementu lub styleatrybutu.
Przykłady: Sekcja częstych przypadków użycia
Ta sekcja zawiera przykłady niektórych typowych scenariuszy polityki bezpieczeństwa.
Przykład 1 Sekcja
Administrator witryny chce, aby cała treść pochodziła z własnego źródła witryny (z wyłączeniem subdomen).
Polityka bezpieczeństwa treści: domyślna „własna” src
Przykład 2 Sekcja
Administrator witryny chce zezwolić na treść z zaufanej domeny i wszystkich jej subdomen (nie musi to być ta sama domena, w której jest ustawiony CSP).
Polityka bezpieczeństwa treści: domyślna „własna” src * .trusted.com
Przykład 3 Sekcja
Administrator witryny internetowej chce zezwolić użytkownikom aplikacji internetowej na dołączanie obrazów z dowolnego źródła do własnej treści, ale ograniczyć dostęp do multimediów audio lub wideo do zaufanych dostawców, a wszystkie skrypty tylko do określonego serwera, który obsługuje zaufany kod.
Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com
Tutaj domyślnie treść jest dozwolona tylko z pochodzenia dokumentu, z następującymi wyjątkami:
Obrazy mogą być ładowane z dowolnego miejsca (zwróć uwagę na symbol wieloznaczny „*”).
Media są dozwolone tylko z mediów1.com i media2.com (a nie z subdomen tych witryn).
Skrypt wykonywalny jest dozwolony tylko z userscripts.example.com.
Przykład 4 Sekcja
Administrator witryny internetowej dla bankowości internetowej chce mieć pewność, że cała jej zawartość jest ładowana przy użyciu protokołu SSL, aby uniemożliwić napastnikom podsłuchiwanie żądań.
Polityka bezpieczeństwa treści: default-src https://onlinebanking.jumbobank.com
Serwer zezwala na dostęp tylko do dokumentów ładowanych konkretnie przez HTTPS za pośrednictwem jednego źródła onlinebanking.jumbobank.com.
Przykład 5 Sekcja
Administrator witryny internetowej poczty elektronicznej chce zezwolić na HTML w wiadomościach e-mail, a także obrazy ładowane z dowolnego miejsca, ale nie z JavaScript ani z innych potencjalnie niebezpiecznych treści.
Polityka bezpieczeństwa treści: default-src 'self' * .mailsite.com; img-src *
Zauważ, że ten przykład nie określa a script-src; w przykładzie CSP ta strona używa ustawienia określonego przez default-srcdyrektywę, co oznacza, że skrypty mogą być ładowane tylko z serwera źródłowego.
Tagi: Polityka bezpieczeństwa treści CSP Odniesienie Bezpieczeństwo