Sentiti libero di condividere il nostro sito Web e i codici con un altro, aiutaci ad espandere la nostra comunità.
L'HTTP Content-Security-Policy
consente agli amministratori dei siti web di controllare le risorse che l'interprete è autorizzato a caricare per una determinata pagina. Con poche eccezioni, le politiche riguardano principalmente la specificazione delle origini del server e degli endpoint degli script. Questo aiuta a difendersi dagli attacchi di cross-site scripting (XSS).
Per ulteriori informazioni, consultare l'articolo introduttivo sui Criteri di sicurezza dei contenuti (CSP).
Tipo di intestazione | Intestazione di risposta |
---|---|
Nome intestazione proibita | no |
Sintassi
Content-Security-Policy:;
dove
consiste in:
senza punteggiatura interna.
Direttive
Direttive di recupero
Le direttive di recupero controllano le posizioni da cui possono essere caricati certi tipi di risorse.
child-src
-
Definisce le fonti valide per lavoratori web e i contesti di navigazione nidificati, caricati usando elementi come
e
.
Invece di
child-src
se si vogliono regolare i contesti di navigazione e i lavoratori nidificati, si dovrebbe usare l'opzioneframe-src
eworker-src
rispettivamente. connect-src
- Limita gli URL che possono essere caricati utilizzando le interfacce di script.
default-src
- Serve come ripiego per le altre direttive fetch.
font-src
- Specifica le fonti valide per i font caricati usando
@font-face
. frame-src
- Specifica le fonti valide per il caricamento di contesti di navigazione nidificati utilizzando elementi come
e
.
img-src
- Specifica le fonti valide di immagini e favicon.
manifest-src
- Specifica le fonti valide dei file manifest delle applicazioni.
media-src
- Specifica le fonti valide per il caricamento dei file multimediali usando l'opzione
,
e
.
object-src
- Specifica le fonti valide per l'elemento
,
e
.
- Elementi controllati da
object-src
sono forse per coincidenza considerati elementi HTML legacy e non ricevono nuove funzionalità standardizzate (come gli attributi di sicurezzasandbox
oallow
per). Pertanto è raccomandato limitare questa direttiva di fetch (ad esempio, impostando esplicitamente
object-src 'none'
se possibile). prefetch-src
- Specifica le fonti valide da prefetare o prerenderizzare.
script-src
- Specifica le fonti valide per JavaScript.
script-src-elem
- Specifica le fonti valide per JavaScript
elementi.
script-src-attr
- Specifica le fonti valide per i gestori di eventi in linea JavaScript.
style-src
- Specifica le fonti valide per i fogli di stile.
style-src-elem
- Specifica le fonti valide per i fogli di stile
con
rel="stylesheet"
. style-src-attr
- Specifica le fonti valide per gli stili in linea applicati ai singoli elementi DOM.
worker-src
- Specifica le fonti valide per gli stili
Worker
,SharedWorker
, oServiceWorker
script.
Direttive del documento
Le direttive di documento regolano le proprietà di un documento o di un lavoratore ambiente a cui si applica una politica.
base-uri
- Limita gli URL che possono essere usati nel file di un documento.
di un documento. plugin-types
- Limita l'insieme dei plugin che possono essere incorporati in un documento, limitando i tipi di risorse che possono essere caricate.
sandbox
- Abilita una sandbox per la risorsa richiesta, simile all'elemento
sandbox
.
Direttive di navigazione
Le direttive di navigazione regolano le posizioni in cui l'utente può navigare o inviare un modulo, ad esempio.
form-action
- Limita gli URL che possono essere usati come destinazione dell'invio di un modulo da un determinato contesto.
frame-ancestors
- Specifica i genitori validi che possono incorporare una pagina usando
,
,
,
, o
.
navigate-to
- Limita gli URL verso i quali un documento può avviare la navigazione con qualsiasi mezzo, tra cui
form-action
non è specificato),,
window.location
,window.open
, ecc.
Direttive di segnalazione
Le direttive di segnalazione controllano il processo di segnalazione delle violazioni del CSP. Si veda anche la sezione Content-Security-Policy-Report-Only
.
report-uri
- Indica all'interprete di segnalare i tentativi di violazione della Content Security Policy. Queste segnalazioni di violazione consistono in JSON inviati tramite un file HTTP
POST
all'URI specificato.Anche se il
report-to
sia destinata a sostituire la deprecata direttivareport-uri
,report-to
non è ancora supportata dalla maggior parte dei browser. Quindi, per la compatibilità con i browser attuali e per aggiungere la compatibilità con il futuro, quando i browser avranno il formatoreport-to
è possibile specificare siareport-uri
ereport-to
:Content-Security-Policy: ...; report-uri https://endpoint.example.com; report-to groupname
Nei browser che supportano
report-to
, ilreport-uri
sarà ignorata. report-to
- Accende un
SecurityPolicyViolationEvent
.
Altre direttive
block-all-mixed-content
- Impedisce il caricamento di qualsiasi risorsa tramite HTTP quando la pagina viene caricata tramite HTTPS.
referrer
- Utilizzato per specificare le informazioni nell'intestazione Referer (sic) per i collegamenti lontani da una pagina. Utilizzare l'opzione
Referrer-Policy
al suo posto. require-sri-for
- Richiede l'uso di ISR per gli script o gli stili della pagina.
require-trusted-types-for
- Applica Tipi affidabili nei punti di iniezione DOM XSS.
trusted-types
- Utilizzato per specificare un elenco di permessi di Tipi affidabili politiche. Trusted Types consente alle applicazioni di bloccare i sink per l'iniezione di XSS nel DOM, in modo che accettino solo valori non falsificabili e tipizzati al posto delle stringhe.
upgrade-insecure-requests
- Indica agli interpreti di trattare tutti gli URL non sicuri di un sito (quelli serviti via HTTP) come se fossero stati sostituiti da URL sicuri (quelli serviti via HTTPS). Questa direttiva è destinata ai siti Web con un gran numero di URL non sicuri che devono essere riscritti.
CSP nei lavoratori
Lavoratori sono in generale non governati dalla politica di sicurezza dei contenuti del documento (o del worker padre) che li ha creati. Per specificare un criterio di sicurezza del contenuto per il worker, impostare un parametro Content-Security-Policy
per la richiesta che ha richiesto lo script worker stesso.
Fa eccezione il caso in cui l'origine dello script worker sia un identificatore univoco globale (ad esempio, se il suo URL ha uno schema di dati o blob). In questo caso, il worker eredita la politica di sicurezza dei contenuti del documento o del worker che lo ha creato.
Politiche di sicurezza del contenuto multiple
Il meccanismo CSP consente di specificare più politiche per una risorsa, anche tramite l'opzione Content-Security-Policy
l'intestazione, l'intestazione Content-Security-Policy-Report-Only
e un'intestazione ...e un elemento
.
È possibile utilizzare l'elemento Content-Security-Policy
più di una volta, come nell'esempio seguente. Prestare particolare attenzione all'elemento connect-src
in questo caso. Anche se il secondo criterio consentirebbe la connessione, il primo criterio contiene connect-src 'none'
. Aggiunta di ulteriori criteri può solo limitare ulteriormente le capacità della risorsa protetta, il che significa che non sarà consentita alcuna connessione e che, come politica più rigida, connect-src 'none'
viene applicata.
Content-Security-Policy: default-src 'self' http://example.com; connect-src 'none'; Content-Security-Policy: connect-src http://example.com/; script-src http://example.com/
Esempi
Esempio: Disabilitare inline/eval non sicuri, consentire solo il caricamento di risorse (immagini, font, script, ecc.) su https:
// header Content-Security-Policy: default-src https: // meta tag
Esempio: Sito preesistente che utilizza troppo codice inline da correggere, ma che vuole garantire che le risorse siano caricate solo su HTTPS e disabilitare i plugin:
Content-Security-Policy: default-src https: 'unsafe-eval' 'unsafe-inline'; object-src 'none'
Esempio: Non implementare ancora la politica di cui sopra; segnalare invece solo le violazioni che si sarebbero verificate:
Content-Security-Policy-Report-Only: default-src https:; report-uri /csp-violation-report-endpoint/
Vedere Linee guida per la sicurezza Web di Mozilla per ulteriori esempi.
Specifiche
Specifiche | Stato | Commento |
---|---|---|
Politica di sicurezza dei contenuti Livello 3 | Bozza di lavoro | Aggiunge manifest-src , navigate-to , report-to , strict-dynamic , worker-src . Non è stato imprecisato frame-src . Depreca report-uri in favore di report-to . |
Contenuto misto | Raccomandazione del candidato | Aggiunge block-all-mixed-content . |
Integrità delle sotto-risorse | Raccomandazione | Aggiunge require-sri-for . |
Aggiornamento delle richieste non sicure | Raccomandazione del candidato | Aggiunte upgrade-insecure-requests . |
Politica di sicurezza dei contenuti di livello 2 | Raccomandazione | Aggiunge base-uri , child-src , form-action , frame-ancestors , plugin-types , referrer , e report-uri . Depreca frame-src . |
Politica di sicurezza dei contenuti 1.0 | Obsoleto | Definisce connect-src , default-src , font-src , frame-src , img-src , media-src , object-src , report-uri, sandbox , script-src, e style-src . |
Compatibilità con i browser Aggiornare i dati di compatibilità su GitHub
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Bordo | Firefox | Internet Explorer | Opera | Safari | |
Content-Security-Policy |
25
|
14 | 23
|
10
|
15 | 7
|
base-uri |
40 | 79 | 35 | No | 27 | 10 |
block-all-mixed-content |
Sì | ≤79 | 48 | No | Sì | ? |
child-src |
40 | 15 | 45 | No | 27 | 10 |
connect-src |
25 | 14 | 23
|
No | 15 | 7 |
default-src |
25 | 14 | 23 | No | 15 | 7 |
font-src |
25 | 14 | 23 | No | 15 | 7 |
form-action |
40 | 15 | 36 | No | 27 | 10 |
frame-ancestors |
40 | 15 | 33
|
No | 26 | 10 |
frame-src |
25 | 14 | 23 | No | 15 | 7 |
img-src |
25 | 14 | 23 | No | 15 | 7 |
manifest-src |
Sì | 79 | 41 | No | Sì | No |
media-src |
25 | 14 | 23 | No | 15 | 7 |
supporto dell'elemento |
Sì | ≤18 | 45 | No | Sì | Sì |
navigate-to |
No | No | No | No | No | No |
object-src |
25 | 14 | 23 | No | 15 | 7 |
plugin-types |
40 | 15 | No
|
No | 27 | 10 |
prefetch-src |
No
|
No
|
No
|
No | No | No
|
referrer |
33 - 56 | No | 37 - 62 | No | ? - 43 | No |
report-sample |
59 | ≤79 | ? | ? | 46 | ? |
report-to |
70 | 79 | No | No | No | No |
report-uri |
25 | 14 | 23 | No | 15 | 7 |
require-sri-for |
54 | 79 | 49 - 68Disabilitato
|
No | 41 | No |
sandbox |
25 | 14 | 50 | 10 | 15 | 7 |
script-src |
25 | 14 | 23 | No | 15 | 7 |
script-src-attr |
75 | 79 | No
|
No | 62 | No |
script-src-elem |
75 | 79 | No
|
No | 62 | No |
strict-dynamic |
52 | 79 | 52 | No | 39 | No |
style-src |
25 | 14 | 23 | No | 15 | 7 |
style-src-attr |
75 | 79 | No
|
No | 62 | No |
style-src-elem |
75 | 79 | No
|
No | 62 | No |
trusted-types |
83
|
? | No | No | No | No |
unsafe-hashes |
69 | 79 | No
|
No | 56 | No |
upgrade-insecure-requests |
43 | 17 | 42 | No | 30 | 10.1 |
Supporto ai lavoratori | Sì | ≤79 | 50 | No | ? | 10 |
worker-src |
59
|
79 | 58 | No | 48 | No |
Mobile | ||||||
---|---|---|---|---|---|---|
Vista web Android | Chrome per Android | Firefox per Android | Opera per Android | Safari su iOS | Samsung Internet | |
Content-Security-Policy |
Sì | Si | 23 | Sì | 7
|
Sì |
base-uri |
Si | Sì | 35 | ? | 9.3 | Sì |
block-all-mixed-content |
Sì | Si | 48 | ? | ? | Sì |
child-src |
Sì | Sì | 45 | ? | 9.3 | Sì |
connect-src |
Si | Si | 23 | ? | 7 | Sì |
default-src |
Sì | Si | 23 | ? | 7 | Sì |
font-src |
Sì | Si | 23 | ? | 7 | Sì |
form-action |
Sì | Sì | 36 | ? | 9.3 | Sì |
frame-ancestors |
? | Sì | 33
|
? | 9.3 | Sì |
frame-src |
Si | Si | 23 | ? | 7 | Sì |
img-src |
Sì | Si | 23 | ? | 7 | Si |
manifest-src |
Sì | Si | 41 | ? | No | Sì |
media-src |
Sì | Si | 23 | ? | 7 | Sì |
supporto elementi |
Sì | Sì | 45 | Si | Si | Si |
navigate-to |
No | No | No | No | No | No |
object-src |
Sì | Sì | 23 | ? | 7 | Sì |
plugin-types |
Sì | Si | No | ? | 9.3 | Sì |
prefetch-src |
No
|
No
|
No
|
No | No
|
No |
referrer |
4.4.3 - 56 | 33 - 56 | 37 - 62 | ? - 43 | No | 2.0 - 6.0 |
report-sample |
59 | 59 | ? | 43 | ? | 7.0 |
report-to |
70 | 70 | No | No | No | 10.0 |
report-uri |
Sì | Sì | 23 | ? | 7 | Sì |
require-sri-for |
54 | 54 | 49 - 68Disabilitato
|
41 | No | 6.0 |
sandbox |
Sì | Sì | 50 | ? | 7 | Sì |
script-src |
Sì | Sì | 23 | ? | 7 | Si |
script-src-attr |
75 | 75 | No
|
? | No | No |
script-src-elem |
75 | 75 | No
|
? | No | No |
strict-dynamic |
52 | 52 | No | 41 | No | 6.0 |
style-src |
Sì | Sì | 23 | ? | 7 | Sì |
style-src-attr |
75 | 75 | No
|
? | No | No |
style-src-elem |
75 | 75 | No
|
? | No | No |
trusted-types |
83 | 83
|
No | No | No | No |
unsafe-hashes |
69 | 69 | No | 48 | No | No |
upgrade-insecure-requests |
43 | 43 | 42 | 30 | 10.3 | 4.0 |
Supporto ai lavoratori | Sì | Sì | 50 | ? | 10 | Sì |
worker-src |
59
|
59
|
58 | 45 | No | 7.0 |
Vedi anche
Content-Security-Policy-Report-Only
- Informazioni su: Politica di sicurezza dei contenuti
- Sicurezza dei contenuti in WebExtensions
- Adottare una politica rigorosa
- Valutatore CSP - Valutare la politica di sicurezza dei contenuti
© 2005-2020 Mozilla e singoli collaboratori.
Con licenza Creative Commons Attribuzione-Condividi allo stesso modo v2.5 o successiva.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
Se capisci che questo articolo ti è stato utile, ti saremmo grati se lo condividessi con altri anziani e ci aiutassi a diffondere questo contenuto.