Content Security Policy

Content Security Policy (CSP) to kolejny nagłówek bezpieczeństwa, który stosuję w stronach internetowych. Chroni on w szczególności przed atakami typu Cross-Site Scripting (XSS). CSP pozwala administratorom stron internetowych kontrolować zasoby, które strona może załadować. To z kolei znacznie zwiększa bezpieczeństwo użytkowników i danych. W tym artykule opiszę, czym jest CSP, jakie są jego główne funkcje, jak wygląda podstawowa konfiguracja oraz jakie korzyści uzyskamy przy jego wdrożeniu.

Czym jest Content Security Policy?

Content Security Policy jest standardem bezpieczeństwa, który opracowało W3C (World Wide Web Consortium). Definiuje on polityki bezpieczeństwa dla stron internetowych. CSP działa poprzez dodanie nagłówka HTTP Content-Security-Policy do odpowiedzi serwera, który zawiera zestaw dyrektyw określających, jakie zasoby mogą być ładowane i wykonywane przez przeglądarkę. Dzięki temu istnieje szansa na ograniczenie ryzyka ataków XSS, clickjacking oraz innych zagrożeń związanych z bezpieczeństwem.

Główne funkcje CSP

CSP oferuje szereg funkcji, które pomagają w zabezpieczeniu aplikacji internetowych. Oto niektóre z najważniejszych:

  1. Ograniczenie źródeł zasobów: CSP pozwala określić, skąd mogą pochodzić zasoby ładowane na stronę. Do zasobów tych zaliczamy skrypty JavaScript, style CSS, obrazy, czcionki i inne. Można na przykład zezwolić na ładowanie zasobów tylko z określonych domen lub z samej strony (self).
  2. Zapobieganie atakom XSS: Ataki XSS polegają na wstrzykiwaniu złośliwego kodu do strony internetowej, który następnie jest wykonywany przez przeglądarkę użytkownika. CSP pozwala na zdefiniowanie, jakie skrypty mogą być wykonywane, co znacznie utrudnia atakującym wstrzykiwanie złośliwego kodu.
  3. Ochrona przed clickjackingiem: Clickjacking to technika, w której atakujący osadza stronę ofiary w niewidocznej ramce iframe. Następnie nakłania użytkownika do kliknięcia na elementy tej strony. Natomiast użytkownik nie zdaje sobie z tego sprawy. CSP pozwala na zablokowanie osadzania strony w iframe, co zapobiega tego rodzaju atakom.
  4. Wymuszanie bezpiecznych połączeń: CSP może być używany do wymuszania ładowania zasobów tylko przez bezpieczne połączenia HTTPS. Takie połączenie zwiększa bezpieczeństwo danych przesyłanych między przeglądarką a serwerem.

Konfiguracja

Konfiguracja CSP polega na dodaniu nagłówka HTTP Content-Security-Policy do odpowiedzi serwera. Nagłówek ten zawiera zestaw dyrektyw, które określają politykę bezpieczeństwa dla strony. Oto kilka przykładów dyrektyw CSP:

  1. default-src: Określa domyślne źródła zasobów, które mogą być ładowane na stronę. Na przykład:
    http
    Content-Security-Policy: default-src 'self';
    

    Powyższa dyrektywa zezwala na ładowanie zasobów tylko z tej samej domeny, co strona.

  2. script-src: Określa źródła skryptów JavaScript, które mogą być wykonywane na stronie. Na przykład:
    http
    Content-Security-Policy: script-src 'self' https://example.com;
    

    Powyższa dyrektywa zezwala na wykonywanie skryptów tylko z tej samej domeny oraz z domeny example.com.

  3. style-src: Określa źródła stylów CSS, które mogą być ładowane na stronę. Na przykład:
    http
    Content-Security-Policy: style-src 'self' https://example.com;
    

    Powyższa dyrektywa zezwala na ładowanie stylów tylko z tej samej domeny oraz z domeny example.com.

  4. img-src: Określa źródła obrazów, które mogą być ładowane na stronę. Na przykład:
    http
    Content-Security-Policy: img-src 'self' https://example.com;
    

    Powyższa dyrektywa zezwala na ładowanie obrazów tylko z tej samej domeny oraz z domeny example.com.

  5. frame-ancestors: Określa, które strony mogą osadzać daną stronę w iframe. Na przykład:
    http
    Content-Security-Policy: frame-ancestors 'self';
    

    Powyższa dyrektywa zezwala na osadzanie strony tylko w iframe na tej samej domenie.

Jakie korzyści daje wdrożenie Content Security Policy?

Wdrożenie CSP przynosi szereg korzyści związanych z bezpieczeństwem. Oto niektóre z najważniejszych:

  1. Zwiększone bezpieczeństwo: CSP pozwala na ograniczenie ryzyka ataków XSS, clickjacking oraz innych zagrożeń związanych z bezpieczeństwem. Dzięki temu użytkownicy mogą czuć się bezpieczniej podczas korzystania z Twojej strony.
  2. Ochrona danych użytkowników: CSP pomaga w ochronie danych użytkowników przed nieautoryzowanym dostępem i kradzieżą. Dzięki temu możesz zapewnić swoim użytkownikom większą prywatność i bezpieczeństwo.
  3. Zgodność z przepisami: Wdrożenie CSP może pomóc w spełnieniu wymagań dotyczących bezpieczeństwa danych, takich jak RODO (Rozporządzenie o Ochronie Danych Osobowych) w Unii Europejskiej. Dzięki temu możesz uniknąć potencjalnych kar i sankcji związanych z naruszeniem przepisów.
  4. Poprawa reputacji: Strony internetowe, które dbają o bezpieczeństwo swoich użytkowników, cieszą się lepszą reputacją i zaufaniem. Wdrożenie CSP może w efekcie pomóc w budowaniu pozytywnego wizerunku Twojej marki.

Przykłady zastosowania Content Security Policy

CSP może być stosowany w różnych scenariuszach, aby zapewnić bezpieczeństwo. Oto kilka przykładów zastosowania:

  1. Strony logowania: Na stronach logowania warto wdrożyć CSP, aby zapobiec atakom XSS i ochronić dane logowania użytkowników.
  2. Strony e-commerce: W sklepach internetowych CSP może pomóc w ochronie danych klientów, takich jak informacje o płatnościach i dane osobowe.
  3. Aplikacje webowe: W aplikacjach webowych CSP może być używany do ochrony przed atakami XSS i clickjacking, co z kolei zwiększa bezpieczeństwo użytkowników i danych.

Podsumowanie

Content Security Policy jest ważnym mechanizmem bezpieczeństwa. Kontroluje zasoby, które mogą być ładowane i wykonywane na stronach internetowych. Wdrożenie CSP przynosi szereg korzyści związanych z bezpieczeństwem, ochroną danych użytkowników oraz zgodnością z przepisami. Konfiguracja CSP jest stosunkowo prosta. Dodajemy nagłówek HTTP Content-Security-Policy do odpowiedzi serwera, który zawiera zestaw dyrektyw określających politykę bezpieczeństwa dla strony. Dzięki CSP możesz zapewnić swoim użytkownikom większe bezpieczeństwo i prywatność, gdy korzystają z Twojej strony.

Jest to kolejny z elementów mających na celu poprawę bezpieczeństwa naszej witryny. Jest to też kolejny z kroków do uzyskania końcowego efektu, jaki opisałem w artykule Strona internetowa – jak ją założyć?

Content Security Policy

Konfiguracja Content Security Policy na mojej stronie

W efekcie widzimy, że po właściwej konfiguracji indeks bezpieczeństwa osiągnął poziom A.

Jeśli zainteresował Cię artykuł i chcesz wiedzieć więcej, zajrzyj na strony MDN Web Docs oraz Content Security Policy – An Introduction.