Verifica intestazioni di sicurezza

Incolli le intestazioni di risposta di una pagina —curl -sI https://your-site.example/in un terminale, oppure il blocco dal pannello Rete del browser — e ottenga unvoto da A+ a Fsecondo la lista di controllo OWASP delle intestazioni di sicurezza:Strict-Transport-Security, Content-Security-Policy, X-Content-Type-Options, protezione dal framing,Referrer-Policy, Permissions-Policy, il trio dell'isolamento cross-origin, le fughe di informazioni sulla versione, le intestazioni obsolete e i flag dei cookie — ogni risultato abbinato alle righe esatte pernginx, Apache ed Expressche lo risolvono. Tutto funziona nel suo browser; la pagina non contatta mai il suo sito.
La riga di stato è facoltativa. Vengono verificate tutte le righe Set-Cookie. Per avere una policy da valutare, la costruisca nel generatore CSP; per scomporre un blocco di intestazioni riga per riga, usi l'analizzatore di intestazioni HTTP.
Nessun voto ancora. Incolli le intestazioni di risposta e prema Verifica intestazioni, oppure carichi un esempio.
Le righe di correzione per ogni risultato compaiono qui dopo una verifica.
Ambito di questa verifica rispetto al Controllo SSL. Questa pagina valuta le intestazioni di risposta di sicurezza (l'elenco OWASP sopra). Il Controllo SSL valuta la sua configurazione HTTPS: catena dei certificati, versioni del protocollo, robustezza dei cifrari e contenuto misto. HSTS e i flag dei cookie compaiono in entrambe le pagine perché entrambe le liste li includono, ma con lenti diverse — esegua entrambe le verifiche per il quadro completo.
Autotest
Riesegue il valutatore su blocchi di intestazioni fissi: l'esempio buono a A+, quello cattivo a F con ogni penalità applicata, ogni regola isolata (l'aritmetica del punteggio), il limite per la fuga di versione, gli avvisi sui cookie, le note sulla qualità della CSP, frame-ancestors che conta come protezione dal framing, le soglie dei voti su entrambi i lati di ogni confine, i frammenti di correzione e i percorsi negativi. Nulla viene inviato da nessuna parte.
Che cosa sono le intestazioni di sicurezza?
In una frase: le intestazioni di sicurezza sono intestazioni di risposta che ordinano al browser di applicare una protezione che non potrebbe dedurre da solo — non caricare mai script da origini sconosciute, non parlare mai più HTTP in chiaro con questo host, non incorniciare mai questa pagina — e costano una riga di configurazione ciascuna.
Le intestazioni che questa pagina valuta
IntestazioneProtegge daValore raccomandato da OWASP
Strict-Transport-Securitydeclassamento del protocollo e furto di cookie alla prima richiesta in HTTP in chiaromax-age=63072000; includeSubDomains
Content-Security-Policycross-site scripting, incorporamenti dannosi, contenuto mistodefault-src 'self'; form-action 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'none'; upgrade-insecure-requests
X-Content-Type-Optionsconfusione MIME (uno script servito come immagine)nosniff
X-Frame-Options / CSP frame-ancestorsclickjacking (la sua pagina incorniciata da un attaccante)deny / 'none'
Referrer-Policyfuga di URL (con token) verso siti di terze partino-referrer
Permissions-Policypagine e incorporamenti che usano in silenzio fotocamera, microfono, geolocalizzazionetutte le funzioni disattivate
Cross-Origin-Opener-Policyaltre finestre che accedono al suo contesto di navigazionesame-origin
Cross-Origin-Embedder-Policycaricamento di risorse che non hanno aderito (abilita l'isolamento dei processi)require-corp
Cross-Origin-Resource-Policysue risorse incorporate da altri sitisame-origin
Come si calcola il voto

Parta da 100 e sottragga: −25 per CSP mancante, −20 per HSTS mancante, −10 ciascuno per X-Content-Type-Options, Referrer-Policy o qualsiasi protezione dal framing mancante, −5 ciascuno per il trio cross-origin e Permissions-Policy, −5 per le fughe di versione in Server/X-Powered-By (con limite), e −5 per un X-XSS-Protection diverso da zero. Voti: 100 = A+, 90+ = A, 80+ = B, 70+ = C, 60+ = D, sotto = F. Le note consultive (flag dei cookie, controllo della cache, qualità della CSP) non sottraggono punti.

Errori comuni
  • Impostare le intestazioni sulle risposte sbagliate. Le aggiunga a ogni risposta, comprese le pagine di errore e i reindirizzamenti — è a questo che serve il always in add_header ... always; (nginx) e in Header always set (Apache).
  • Verificare solo la homepage. Proxy, cache e applicazioni legacy spesso rimuovono o sovrascrivono le intestazioni solo su alcuni percorsi. Verifichi le pagine importanti: login, checkout, endpoint API.
  • Mantenere X-XSS-Protection. L'auditor che pilotava ha causato vulnerabilità proprie; i browser lo hanno rimosso. Un valore diverso da zero ora costa punti di proposito — lo rimuova e lasci fare il lavoro alla CSP.
  • Credere che X-Frame-Options sia attuale. Non può consentire origini specifiche e non è nello standard CSP; frame-ancestors è il sostituto moderno. Mantenerle entrambe durante la transizione va bene — questa pagina accetta l'una o l'altra.
  • Esporre banner di versione. Server: Apache/2.4.58 (Unix) restringe la ricerca di bug noti da parte di un attaccante senza alcun vantaggio per lei. Rimuova la versione; riduca il numero di righe.
FAQ

Perché COOP/COEP/CORP valgono solo 5 punti ciascuno? Il trio è lo strato più recente, necessario soprattutto dove si voglia l'isolamento dei processi (SharedArrayBuffer, protezioni contro Spectre). Un sito senza di essi conserva comunque le sue protezioni principali; con essi, alcuni incorporamenti cross-origin richiedono adattamenti — per questo pesano meno di CSP o HSTS.

Un voto alto significa che il sito è sicuro? No — significa che le intestazioni di risposta sono impostate. Le intestazioni di sicurezza sono uno strato: la configurazione TLS, la gestione delle sessioni, la validazione degli input e gli aggiornamenti decidono comunque se il sito è davvero sicuro. Esegua il Controllo SSL per lo strato TLS.

Perché il mio valore di Permissions-Policy è così lungo? La base OWASP disattiva esplicitamente ogni funzione, così che un browser che aggiunge nuove funzioni non le riabiliti in silenzio. Un valore più breve come camera=(), microphone=(), geolocation=() è un inizio — sappia solo che cosa lascia attivo.

Posso verificare le intestazioni di un sito qualsiasi da qui? Questa pagina non effettua mai richieste di rete — valuta esattamente il testo che incolla, quindi funziona dietro i firewall e su host interni, e nulla di ciò che ispeziona lascia la sua macchina. Recuperare le intestazioni è un solo curl -sI nel suo terminale.

E Clear-Site-Data e X-Permitted-Cross-Domain-Policies? Utili in scenari ristretti (risposte di logout; visualizzatori PDF/Flash legacy). Qui sono consultivi, non valutati — inviare Clear-Site-Data in ogni risposta cancellerebbe lo storage degli utenti a ogni caricamento di pagina.