Wydrukuj tę dokumentację Pokaż jako slajdy

Konfiguracja raportowania CSP w nginx

Content Security Policy to specjalny nagłówek dla przeglądarki sterujący, które elementy pobierane ze strony webowej są uprawnione do pokazania użytkownikowi. Jeżeli jakiś element: czcionka, css, Java Script czy obrazek nie mieści się na białej liście elementów uprawnionych, to zostanie zablokowany użytkownikowi końcowemu. Jednym z elementów konfiguracyjnych CSP jest sposób przekazania raportu do serwera, że nastąpiło naruszenie polityki CSP. Zgodnie ze standardem, jest przekazywany obiekt typu JSON, zaś serwer może go "odebrać" poddając konwersji

csp-report.cgi

Do przyjmowania raportów CSP służy skrypt csp-report.cgi, który jest wkazywany w polityce jako sposób raportowania przez przeglądarkę. Zwyczajowo jest to ostatni element nagłówka CSP, który przyjmuje postać:

add_header Content-Security-Policy "upgrade-insecure-requests; default-src https:; [...] report-uri /cgi-bin/csp-report.cgi";

Format logowania

Obsługa raportów Content Security Policy jest umieszczona w repozytorium konfiguracji jako plik 015-csp-log-format.conf tak jak pokazano poniżej:

log_format csplog '$remote_addr - $remote_user '
                '[$time_local] "$http_user_agent" '
                '"$upstream_http_x_csp_referrer" "$upstream_http_x_csp_document_uri" '
                '"$upstream_http_x_csp_blocked_uri" "$upstream_http_x_csp_violated_directive"';

Jak widać wykorzystywane są nagłówki HTTP (odpowiedzi). Zgodnie z dokumentacją należy użyć zmiennej upstream_http_

Ustawienie logowania dla hosta wirtualnego

W celu wykorzystania raportów Content Security Policy należy w konfigracji danego serwera wirtualnego dodać następujące konfiguracje:

server {
    # [...]
    include 015-csp-report.conf;
    access_log /var/log/nginx/server.domain.tld/csp.log csplog if=$csplog;

    # [...]
}

Źródła w sieci internet

  1. Lista zmiennych w nginx

  2. Warunkowe logowanie w NGINX na przykładzie parametrów TLS

Odnośniki do dokumentacji

  1. Konfiguracja nginx

  2. Bezpieczne nagłówki HTTP


{i}  (c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.