Różnice pomiędzy wersjami 1 i 2
⇤ ← Wersja 1 z 2019-12-04 01:09:19 →
Rozmiar: 1798
Edytor: wtps0n
Komentarz: *** KREACJA ***
← Wersja 2 z 2019-12-09 22:31:29 → ⇥
Rozmiar: 3427
Edytor: wtps0n
Komentarz: Dokończenie dokumentacji
Usunięcia zostały oznaczone w ten sposób. Dodatki zostały oznaczone w ten sposób.
Linia 9: Linia 9:
''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 ''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
Linia 11: Linia 11:
== Skrypt shell ==
{{{#!highlight bash numbers=off
ls /root
== 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ć:
{{{#!highlight nginx numbers=off
add_header Content-Security-Policy "upgrade-insecure-requests; default-src https:; [...] report-uri /cgi-bin/csp-report.cgi";
Linia 16: Linia 17:
== Plik konfiguracyjny ==
{{{#!highlight ini numbers=off
# komentarz
parametr = wartość
== Format logowania ==
Obsługa raportów ''Content Security Policy'' jest umieszczona w [[UniMaster|repozytorium konfiguracji]] jako plik '''015-csp-log-format.conf''' tak jak pokazano poniżej:
{{{#!highlight nginx numbers=off
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 [[http://nginx.org/en/docs/http/ngx_http_upstream_module.html#var_upstream_http_|upstream_http_|target="_blank"]]

== 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:
{{{#!highlight nginx numbers=off
server {
    # [...]
    include 015-csp-report.conf;
    access_log /var/log/nginx/server.domain.tld/csp.log csplog if=$csplog;

    # [...]
}
Linia 24: Linia 41:
 2. <<Anchor(url2)>>[[url2||target="_blank"]]
 3. <<Anchor(url3)>>[[url3||target="_blank"]]
 4. <<Anchor(url4)>>[[url4||target="_blank"]]
 1. <<Anchor(url2)>>[[https://docs.nginx.com/nginx/admin-guide/monitoring/logging/|Warunkowe logowanie w NGINX|target="_blank"]] na przykładzie parametrów TLS
Linia 33: Linia 48:

{{{#!wiki comment
 1. <<Anchor(url3)>>[[url3||target="_blank"]]
 1. <<Anchor(url4)>>[[url4||target="_blank"]]
Linia 35: Linia 55:

{{{#!wiki comment

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.

CspReport (ostatnio edytowane 2019-12-09 22:31:29 przez wtps0n)