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;
# [...]
}