Posso analizzare un sito senza incollare gli header (passando solo l'URL)?
No, e per scelta. Un fetch cross-origin lato browser viene bloccato dalle policy CORS della pagina target nella maggior parte dei casi. Per evitare di costruire un proxy server-side (con relativi costi e privacy concerns), il tool richiede di incollare gli header. Workflow: curl -sI https://target.it > out.txt, copia out.txt, incolla nel tool.
Il punteggio di hardening è una metrica standard?
No, è una metrica indicativa di triage: somma pesata dei controlli soddisfatti sui controlli rilevanti (CSP +30, HSTS +20, X-Frame-Options +10, Referrer-Policy +5, Permissions-Policy +5, COOP/COEP/CORP +10, niente info disclosure +5, Cache-Control sensibile +5, niente header deprecati +10 = 100). Per benchmark di settore con scoring normalizzato e monitoring continuo esistono servizi commerciali dedicati. Questo tool serve a fare il triage rapido prima di un audit di sicurezza approfondito.
L'analizzatore controlla anche header non legati alla sicurezza (Content-Type, Cache-Control)?
Solo Cache-Control quando c'e' indicazione di pagina sensibile (header che esprimono intent di privacy o di sessione tipo Set-Cookie). Content-Type viene controllato solo per X-Content-Type-Options: nosniff richiesto. Per audit completi di Content-Type, Vary, Accept-Ranges servono tool dedicati di performance/CDN debugging, non security audit.
Perché X-XSS-Protection è classificato come deprecato?
L'header è stato deprecato da Chrome (2019), Firefox (mai supportato seriamente), Safari. La sua euristica XSS lato browser introduceva vulnerabilita' (XS-Leaks) ed era mantenuta solo per legacy IE/Edge. Mozilla raccomanda di rimuoverlo. La difesa XSS moderna è Content-Security-Policy con script-src stretto, niente unsafe-inline, idealmente con nonce o hash sui script inline necessari.
CSP con unsafe-inline mi serve per il sito legacy che ha tanti onclick. Come faccio?
Tre strategie graduali. (1) Refactor verso event handlers in JS esterno (rimuovi onclick=, mettiti in addEventListener nel JS). E' la soluzione pulita ma costosa. (2) CSP con 'unsafe-inline' più 'nonce-RANDOM': il browser accetta inline script con nonce specifico, e dato il nonce ad attaccante richiede compromissione già avvenuta lato server. Compromise pragmatico. (3) CSP con 'unsafe-hashes' per gli inline event handlers (Level 3, 2024+). Browser support più ridotto ma migliora con il tempo.
L'header Server: nginx/1.24.0 è davvero pericoloso?
Non direttamente exploitabile, ma concept di defense in depth: l'attaccante che enumera la versione esatta può cercare exploit pubblici per quella build. Le distro stable (Debian, RHEL) backportano le patch quindi nginx/1.18.0 Debian buster non ha le stesse vuln di nginx/1.18.0 upstream, ma l'attaccante automatizzato non lo sa: vede 1.18.0 e prova exploit. Costo di nascondere: server_tokens off in nginx, due righe. Beneficio: marginale ma gratuito. Sotto NIS2 art. 24 (igiene cyber) è ragionevole farlo.
Devo settare COOP=same-origin se il mio sito non usa SharedArrayBuffer?
Non è obbligatorio, ma è una buona idea. Anche senza SharedArrayBuffer, COOP previene attacchi specifici in cui un'altra finestra (popup di phishing, pagina aperta da utente) può interagire con la tua via window.opener. same-origin isola la tua window completamente, Così che gli script di altri origin non possano leggere il tuo state. Costo: zero impatto su utente, marginale su feature richieste.
Permissions-Policy ha sostituito Feature-Policy?
Si. Feature-Policy era il nome originale (2018-2020). Permissions-Policy è il nome standardizzato (2020+) e con sintassi più chiara. Browser moderni supportano entrambi, ma se servi Permissions-Policy puoi rimuovere Feature-Policy. Sintassi base: Permissions-Policy: camera=(), microphone=(), geolocation=() = vieta tutto. geolocation=(self) = solo origine corrente.
Come faccio HSTS preload per il mio dominio?
(1) Setta header HSTS con max-age=63072000; includeSubDomains; preload su tutti i sotto-domini. (2) Verifica che funzioni con curl -I e con il check di hstspreload.org. (3) Sottoponi il dominio sul portale Chromium hstspreload.org. Inclusione: settimane-mesi. Rimozione: difficile, quindi siano sicuri prima di sottoporre. Impatto: tutti i subdomain HTTP non funzionano più senza certificato.
Che strumenti uso lato server per emettere gli header?
Apache: Header set X-Frame-Options DENY, Header set Content-Security-Policy "...", in .htaccess o config virtual host. Nginx: add_header X-Frame-Options DENY always; nel server block. PHP middleware (Symfony, Laravel, Slim): response->header('X-Frame-Options', 'DENY') oppure middleware globale dedicato. Per CSP con nonce: il middleware genera nonce per request, lo emette nell'header, lo inietta nei tag <script nonce="...">.