Check degli header di sicurezza

Un monitor controlla 5 header di sicurezza su un URL, tra cui HSTS e CSP. Un header mancante risulta degradato di default, così il rilievo finisce nel registro senza aprire un incident.

Tutti i tipi di check http_headers

La vista del monitor del check degli header di sicurezza su https://perstat.io con 6 regioni e 12 check. L’uptime su 24 h è 100%, con un tempo di risposta medio di 748 ms e un P95 di 1305 ms. Il pannello del certificato mostra common name, emittente, validità e 54 giorni rimanenti. Sotto ci sono la regola di alert con un quorum di 2 regioni su 6 e il grafico del tempo di risposta per regione.
In questa pagina

Cosa verifica

Un monitor degli header di sicurezza richiede l’URL con una sola GET da ciascuna delle sue regioni, al suo intervallo. Segue i redirect e legge i nomi degli header di risposta. Il monitor riporta quali header selezionati sono presenti e quali mancano, e non giudica mai un valore. Come monitor a sé con la propria cronologia, mostra la postura degli header di un host separata dalla sua disponibilità.

Da usare quando

  • Un altro monitor copre già la disponibilità dell’endpoint e vanno osservati solo gli header.
  • La postura degli header richiede un registro proprio: la propria cifra di uptime, le proprie righe di dettaglio e il proprio incident quando imposti la gravità a failed.
  • Un deploy, un cambio di CDN o un aggiornamento del reverse proxy può far sparire un header senza preavviso. Vuoi vedere la perdita nel registro dopo il check successivo oppure, con la gravità impostata a failed, in un incident una volta raggiunto il quorum.

Giudica la presenza, non i valori, quindi una Content-Security-Policy che permette tutto passa. Per asserzioni su codice di stato e body usa il check HTTP(S), che porta gli stessi 5 header come subcheck in un solo monitor. Per il certificato come segnale a sé usa il check del certificato TLS.

Il modulo del monitor con tipo Header di sicurezza per https://perstat.io: il campo URL e 5 caselle per HSTS, CSP, X-Content-Type-Options, X-Frame-Options e Referrer-Policy, 4 delle quali selezionate. La gravità degli header mancanti è impostata ad Avviso (degraded). Sotto c’è il blocco del check con 5 minuti, 6 regioni e la regola di alert predefinita.
Il modulo degli header di sicurezza: URL, 5 caselle per gli header e la gravità degli header mancanti. Interfaccia reale del prodotto, dati di esempio.

Configurazione

Target. Un URL completo di schema (https:// o http://), la stessa regola del check HTTP(S). Prima della richiesta la sonda risolve e valida l’URL e ogni salto di redirect. Rifiuta gli indirizzi loopback, privati, link-local e di metadata cloud, così il monitor non può essere puntato verso una rete interna.

CampoObbligatorioValori e defaultSignificato
urlURLURL completo di schemaL’indirizzo che la sonda richiede con una GET, seguendo fino a 5 salti di redirect con la stessa validazione del target. Viene giudicata la risposta dopo l’ultimo redirect.
headersHeader da controllareopzionaleLista tra strict-transport-security, content-security-policy, x-content-type-options, x-frame-options, referrer-policy. Valgono anche le sigle HSTS e CSP. Vuota o assente: tutti e 5, a meno che sia impostata la lista required del formato precedenteGli header di risposta che devono essere presenti. Il modulo ne richiede almeno uno. Nessun campo imposta header di richiesta.
missing_severityTratta gli header mancanti comeopzionaledegraded (default) oppure failedCosa fa un header mancante allo stato: degraded lo tiene come rilievo di postura, e failed lo conta come disservizio. Qualsiasi valore diverso da failed viene letto come degraded. Il modulo mostra i due come Warning e Outage.
requiredopzionaleLista di nomi di headerUn formato precedente per API e MCP, letto solo quando headers è assente. Ogni header elencato che manca fa fallire il check. Usa invece headers con missing_severity.
interval_secondsIntervallo del checkopzionaleSecondi, default 300, massimo 24 h, minimo fissato dal pianoOgni quanto ciascuna regione esegue il check. Un valore sotto il minimo del piano viene alzato al minimo, non rifiutato.
regionsRegioniopzionaleSottoinsieme di na, eu, as, sa, af, oce. Default: le regioni del pianoQuali continenti eseguono il check. Se lo ometti, il piano sceglie il suo insieme predefinito.
address_familiesFamiglie IPopzionale["ipv4"] (default) oppure ["ipv4", "ipv6"]La sonda controlla separatamente ogni indirizzo risolto di ciascuna famiglia selezionata. Con entrambe le famiglie, family_fail_severity (degraded di default, oppure failed) fissa lo stato quando una famiglia fallisce.

Come si svolge un check

  1. Quando scatta un check, ogni regione analizza l’URL e risolve l’host tramite il resolver del proprio nodo. Valida ogni indirizzo della famiglia selezionata contro gli intervalli bloccati. Ogni check va in timeout dopo 10 s.
  2. Ogni indirizzo riceve una GET, con la connessione fissata a quell’indirizzo. La sonda segue i redirect da sé, al massimo 5 salti, e risolve e valida di nuovo ogni salto prima di richiederlo.
  3. Dopo l’ultimo redirect, la sonda raccoglie i nomi degli header di risposta in minuscolo. Non legge i valori.
  4. La sonda confronta la selezione con la lista dei 5 header raccomandati e determina quelli mancanti. L’impostazione missing_severity decide se un header mancante significa degraded o failed.
  5. Su un URL https, la sonda legge il certificato una volta a scopo di visualizzazione. Il certificato non cambia mai il verdetto.
  6. La regione invia il suo risultato al control plane. La regola di alert decide se un risultato fallito apre un incident una volta raggiunto il quorum. Un risultato degradato resta fuori dalla valutazione degli incident.
La vista del monitor del check degli header di sicurezza su https://perstat.io con 6 regioni e 12 check. L’uptime su 24 h è 100%, con un tempo di risposta medio di 748 ms e un P95 di 1305 ms. Il pannello del certificato mostra common name, emittente, validità e 54 giorni rimanenti. Sotto ci sono la regola di alert con un quorum di 2 regioni su 6 e il grafico del tempo di risposta per regione.
La vista del monitor con uptime, tempo di risposta, P95, il certificato letto a scopo di visualizzazione e il quorum di 2 regioni su 6. Interfaccia reale del prodotto, dati di esempio.

Cosa contiene un risultato

Codice di stato
Il codice di stato della risposta dopo i redirect.
Tempo di risposta
Tempo fino alla risposta, per regione e per indirizzo.
Riga di dettaglio
Una riga che dice che tutti gli header controllati erano presenti, oppure nomina quelli mancanti con le loro sigle, per esempio HSTS e CSP.
Livello della causa
Se un fallimento è imputabile al DNS del target (nome non trovato) oppure, dopo un lookup riuscito, al target stesso. Ogni altra causa viene riportata come unknown.
Certificato
Su un URL https, solo a scopo di visualizzazione: common name e nomi alternativi, emittente, date di validità e stato di fiducia.
Regione, famiglia, indirizzo
Ogni risultato porta la regione che l’ha misurato, e un sotto-risultato per famiglia IP e per indirizzo.

Stati e gravità

  • okOgni header selezionato è presente nella risposta dopo i redirect.
  • degradatoAlmeno un header selezionato manca con la gravità predefinita, oppure una famiglia IP fallisce mentre l’altra risponde.
  • downUn header selezionato manca con missing_severity impostato a failed. Conta anche una richiesta fallita: un errore di risoluzione, un target bloccato, un errore di trasporto o un timeout.
  • erroreLa selezione degli header non contiene nessun nome valido. Conta come disservizio con gravità critica.

Confermato dal quorum: di default, 2 regioni devono segnalare il guasto prima che si apra un incident. Il default dell’organizzazione richiede 2 regioni e 2 check consecutivi. Un monitor può avere una regola propria con numero o percentuale, check consecutivi e una durata minima.

Piani e limiti

Intervallo minimo
300 s in Free, 60 s in Pulse, 30 s in Sentinel, 15 s in Command e 10 s in Enterprise. Il modulo web offre 30 s, 1 min, 5 min, 15 min e 1 h. I minimi di 15 s e 10 s si raggiungono solo tramite MCP.
Regioni
2 su 6 in Free, 3 su 6 in Pulse e tutte e 6 da Sentinel.
Monitor
10 monitor di sonda in Free, 50 in Pulse, 150 in Sentinel, 500 in Command e una quota su misura in Enterprise. Undici tipi di check regionali condividono questa quota, mentre host agent e heartbeat hanno la loro. Un pacchetto di 50 monitor in più costa 39 €.

Confronta tutti i limiti

Dalla pipeline o da un agente

La stessa config funziona nello step di deploy, in un client MCP come Claude Code e nel modulo qui sopra. create_monitor richiede una chiave API valida per tutta l’organizzazione. Se ometti regions, il piano sceglie il suo default.

{
  "name": "Web security headers",
  "type": "http_headers",
  "interval_seconds": 300,
  "config": {
    "url": "https://www.example.com",
    "headers": [
      "strict-transport-security",
      "content-security-policy",
      "x-content-type-options"
    ],
    "missing_severity": "degraded"
  }
}

Ogni interfaccia, con il suo limite

Limiti

  • Il check non legge mai il valore di un header, quindi una policy debole passa finché l’header è impostato.
  • Si possono selezionare solo i 5 header elencati. Una selezione senza un nome valido chiude il check come errore.
  • Il check giudica la risposta dopo l’ultimo redirect, non la prima risposta. Un header impostato solo sulla risposta che reindirizza non viene visto.
  • La sonda invia una GET per indirizzo, senza scelta del metodo e senza header di richiesta personalizzati.
  • La sonda rifiuta i target su indirizzi privati, loopback, link-local e di metadata cloud.
  • Non tutte le regioni sondano IPv6, quindi selezionare ipv6 restringe le regioni utilizzabili.

Tutti i tipi di check