Polityka bezpieczeństwa i CSP
1) Dlaczego potrzebujemy polityki bezpieczeństwa
Nowoczesny frontend i API zależą od wielu źródeł (CDN, analityka, PSP, 3DS, czaty). Bez trudnych zasad zwiększa się ryzyko związane z XSS, kliknięciem, wyciekami danych i porwaniem sesji. Zasady zabezpieczeń ograniczają to, co jest domyślnie dozwolone, przenosząc przeglądarkę do modelu listy zezwoleń.
2) Filary podstawowe
CSP (Content Security Policy) jest scentralizowanym „menu” dozwolonych źródeł i zachowań JS/CSS/media.
Zaufane typy - Ochrona na poziomie typu przed DOM-XSS.
SRI (Subresource Integrity) - kontrola integralności skryptów/stylów.
COOP/COEP/CORP - sztywna izolacja kontekstów i zasobów między źródłami.
Fetch Metadane ('Sec-Fetch') jest rozwiązaniem serwera do filtrowania żądań cross-site.
CORS - zasady dostępu do interfejsów API w różnych domenach.
Tytuły klasyczne: HSTS, „X-Frame-Options ”/„ frame-ancestors”, „Referrer-Policy”, „Permissions-Policy”, „ Site-cookies”.
3) CSP: podstawy i zasady
3. 1 Dyrektywy (klucz)
"default-src' - domyślnie dla innych dyrektyw.
"script-src' - źródła JS, nonce/hash," strict-dynamic "," report-sample ".
"styl-src' - źródła CSS; zminimalizować 'unsafe-inline'.
"img-src'," font-src', "media-src", "object-src' (оведна" bez ").
"connnect-src' - żądania sieciowe (XHR/fetch/WebSocket).
„frame-src'/” child-src' - ramy zewnętrzne (PSP, 3DS).
„frame-przodkowie” - kto może osadzić naszą stronę (anty-clickjacking).
„base-uri” - zakazać zastępowania „<base>”.
„forma działania” - w przypadku gdy zezwala się na składanie formularzy.
„upgrade-insecure-requests”, „block-all-mixed-content” - zwalczanie mieszanki HTTP/HTTPS.
„report-uri ”/„ raport-to” - gdzie wysyłać naruszenia.
3. 2 Nonce моска (hash)
Podejście Nonce: wygenerować krypto-losowe 'nonce' dla każdej odpowiedzi HTTP, dodać '