{"id":25831,"date":"2026-07-08T10:00:00","date_gmt":"2026-07-08T08:00:00","guid":{"rendered":"https:\/\/soccorsowp.it\/blog\/?p=25831"},"modified":"2026-07-08T10:00:00","modified_gmt":"2026-07-08T08:00:00","slug":"header-sicurezza-http-wordpress-guida","status":"publish","type":"post","link":"https:\/\/soccorsowp.it\/blog\/header-sicurezza-http-wordpress-guida\/","title":{"rendered":"Come aggiungere gli header di sicurezza HTTP in WordPress"},"content":{"rendered":"<h1>Come aggiungere gli header di sicurezza HTTP in WordPress<\/h1>\n<p>Gli <strong>header di sicurezza HTTP<\/strong> sono istruzioni che il server invia al browser per proteggerlo da attacchi come cross-site scripting (XSS), clickjacking e iniezione di contenuti. <a href=\"https:\/\/soccorsowp.it\/blog\/blocco-di-contenuti-opt-in-per-wordpress\/\">WordPress<\/a> non li imposta di default, lasciando il tuo sito vulnerabile. In questa guida ti spiego quali header aggiungere e come configurarli.<\/p>\n<h2>Perch\u00e9 gli header di sicurezza sono importanti<\/h2>\n<p>Ogni volta che un browser carica una pagina del tuo sito, riceve una serie di <strong>header HTTP<\/strong> nella risposta del server. Questi header possono dire al browser cosa \u00e8 permesso e cosa no: da dove caricare risorse, se la pagina pu\u00f2 essere incorporata in un iframe, quale policy seguire per i referrer. Senza questi header, il browser applica le sue impostazioni predefinite, che spesso sono troppo permissive. Strumenti come <strong>SecurityHeaders.com<\/strong> ti permettono di verificare quali header sono attivi sul tuo sito e ti danno un voto da A+ a F.<\/p>\n<h2>X-Content-Type-Options<\/h2>\n<p>L&#8217;header <span style=\"font-family: monospace\">X-Content-Type-Options: nosniff<\/span> impedisce al browser di interpretare un file con un tipo MIME diverso da quello dichiarato. Senza questo header, un browser potrebbe eseguire un file JavaScript mascherato da immagine, aprendo la porta a attacchi XSS. Questo header \u00e8 semplice da aggiungere e non causa mai problemi di compatibilit\u00e0.<\/p>\n<h2>X-Frame-Options<\/h2>\n<p>L&#8217;header <span style=\"font-family: monospace\">X-Frame-Options: SAMEORIGIN<\/span> impedisce che il tuo sito venga caricato all&#8217;interno di un iframe su un dominio diverso. Questo protegge dal <strong>clickjacking<\/strong>, un attacco in cui il tuo sito viene incorporato invisibilmente in un&#8217;altra pagina per ingannare gli utenti e farli cliccare su pulsanti senza saperlo. Usa <span style=\"font-family: monospace\">SAMEORIGIN<\/span> per permettere gli iframe solo dal tuo stesso dominio, o <span style=\"font-family: monospace\">DENY<\/span> per bloccarli completamente.<\/p>\n<h2>Strict-Transport-Security (HSTS)<\/h2>\n<p>L&#8217;header <strong>HSTS<\/strong> dice al browser di usare sempre HTTPS per il tuo dominio, anche se l&#8217;utente digita http:\/\/. Una volta che il browser riceve questo header, per la durata specificata non tenter\u00e0 mai di connettersi via HTTP. La configurazione consigliata \u00e8:<\/p>\n<pre>Strict-Transport-Security: max-age=31536000; includeSubDomains<\/pre>\n<p>Il valore <span style=\"font-family: monospace\">max-age=31536000<\/span> imposta la durata a un anno. Aggiungi <span style=\"font-family: monospace\">includeSubDomains<\/span> solo se tutti i tuoi sotto-domini supportano HTTPS. <strong>Importante:<\/strong> attiva HSTS solo quando sei sicuro che SSL funziona correttamente sul tuo sito, altrimenti i visitatori non potranno accedervi.<\/p>\n<h2>Referrer-Policy<\/h2>\n<p>L&#8217;header <span style=\"font-family: monospace\">Referrer-Policy<\/span> controlla quante informazioni sul referrer vengono inviate quando un utente clicca un link dal tuo sito verso un sito esterno. Il valore consigliato \u00e8 <span style=\"font-family: monospace\">strict-origin-when-cross-origin<\/span>: invia l&#8217;URL completo solo per le richieste interne al tuo dominio, mentre per le richieste esterne invia solo l&#8217;origine (es. https:\/\/tuodominio.com senza il percorso). Questo protegge la privacy dei tuoi utenti senza rompere la funzionalit\u00e0.<\/p>\n<h2>Permissions-Policy<\/h2>\n<p>L&#8217;header <span style=\"font-family: monospace\">Permissions-Policy<\/span> (precedentemente chiamato Feature-Policy) controlla quali funzionalit\u00e0 del browser il tuo sito pu\u00f2 utilizzare: fotocamera, microfono, geolocalizzazione, ecc. Se il tuo sito non usa queste funzionalit\u00e0, disabilitale per impedire che script malevoli possano attivarle:<\/p>\n<pre>Permissions-Policy: camera=(), microphone=(), geolocation=()<\/pre>\n<p>Le parentesi vuote significano che nessuno, nemmeno il tuo sito stesso, pu\u00f2 utilizzare quella funzionalit\u00e0.<\/p>\n<h2>Come aggiungere gli header in WordPress<\/h2>\n<p>Ci sono tre metodi principali per aggiungere gli header di sicurezza al tuo sito WordPress:<\/p>\n<p><strong>Metodo 1: tramite .htaccess (Apache)<\/strong><\/p>\n<p>Se il tuo server usa Apache, aggiungi queste righe al file <span style=\"font-family: monospace\">.htaccess<\/span> nella root del sito:<\/p>\n<pre>&lt;IfModule mod_headers.c&gt;\nHeader set X-Content-Type-Options \"nosniff\"\nHeader set X-Frame-Options \"SAMEORIGIN\"\nHeader set Strict-Transport-Security \"max-age=31536000; includeSubDomains\"\nHeader set Referrer-Policy \"strict-origin-when-cross-origin\"\nHeader set Permissions-Policy \"camera=(), microphone=(), geolocation=()\"\n&lt;\/IfModule&gt;<\/pre>\n<p><strong>Metodo 2: tramite Nginx<\/strong><\/p>\n<p>Se usi Nginx, aggiungi le stesse direttive nel blocco <span style=\"font-family: monospace\">server<\/span> della configurazione:<\/p>\n<pre>add_header X-Content-Type-Options \"nosniff\" always;\nadd_header X-Frame-Options \"SAMEORIGIN\" always;\nadd_header Strict-Transport-Security \"max-age=31536000; includeSubDomains\" always;\nadd_header Referrer-Policy \"strict-origin-when-cross-origin\" always;\nadd_header Permissions-Policy \"camera=(), microphone=(), geolocation=()\" always;<\/pre>\n<p>Il parametro <span style=\"font-family: monospace\">always<\/span> assicura che gli header vengano inviati anche per le risposte di errore (404, 500, ecc.).<\/p>\n<p><strong>Metodo 3: tramite plugin<\/strong><\/p>\n<p>Se non hai accesso ai file di configurazione del server, puoi usare un plugin come <strong>HTTP Headers<\/strong> o <strong>Headers Security Advanced &amp; HSTS WP<\/strong>. Questi plugin aggiungono gli header tramite PHP, senza modificare .htaccess o Nginx.<\/p>\n<h2>Verificare che gli header siano attivi<\/h2>\n<p>Dopo aver configurato gli header, verifica che funzionino correttamente. Puoi usare il terminale:<\/p>\n<pre>curl -I https:\/\/tuodominio.com<\/pre>\n<p>Oppure visita <strong>SecurityHeaders.com<\/strong> e inserisci l&#8217;URL del tuo sito. Il servizio analizza gli header e ti assegna un voto. L&#8217;obiettivo \u00e8 ottenere almeno un voto <strong>A<\/strong>.<\/p>\n<h2>Content-Security-Policy: l&#8217;header avanzato<\/h2>\n<p>L&#8217;header <span style=\"font-family: monospace\">Content-Security-Policy<\/span> (CSP) \u00e8 il pi\u00f9 potente ma anche il pi\u00f9 complesso da configurare. Definisce da quali origini il browser pu\u00f2 caricare script, stili, immagini e altre risorse. Una policy troppo restrittiva pu\u00f2 rompere il tuo sito, mentre una troppo permissiva non protegge abbastanza.<\/p>\n<p>Per iniziare, usa la modalit\u00e0 <strong>report-only<\/strong> che registra le violazioni senza bloccare nulla:<\/p>\n<pre>Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self' 'unsafe-inline'<\/pre>\n<p>Monitora i report per alcune settimane, poi converti la policy in modalit\u00e0 di blocco effettivo. Se il tuo sito usa Google Analytics, font esterni o CDN per jQuery, dovrai aggiungere queste origini alla policy. La configurazione CSP richiede tempo e test accurati, ma \u00e8 la protezione pi\u00f9 efficace contro gli attacchi XSS.<\/p>\n<h2>Errori comuni da evitare<\/h2>\n<p>Quando configuri gli header di sicurezza, fai attenzione a questi errori frequenti:<\/p>\n<ul>\n<li><strong>Attivare HSTS senza verificare SSL:<\/strong> se il tuo certificato SSL scade o ha problemi, i visitatori non potranno accedere al sito per l&#8217;intera durata del max-age.<\/li>\n<li><strong>Duplicare gli header:<\/strong> se imposti gli header sia in .htaccess sia tramite plugin, il browser riceve valori duplicati che possono causare comportamenti imprevisti.<\/li>\n<li><strong>Impostare X-Frame-Options su DENY con contenuti embed:<\/strong> se usi video incorporati o mappe da servizi esterni, DENY potrebbe bloccarli. Usa SAMEORIGIN in questi casi.<\/li>\n<\/ul>\n<h2>Serve assistenza?<\/h2>\n<p>Se vuoi migliorare la sicurezza del tuo sito WordPress con gli header HTTP corretti, il team di <strong><a href=\"https:\/\/soccorsowp.it\/blog\/i-migliori-plugin-woocommerce-per-dominare-il-black-friday\/\">SoccorsoWP<\/a><\/strong> pu\u00f2 configurarli per te senza rischiare di rompere il sito. <a href=\"https:\/\/soccorsowp.it\/ticket\/\">Apri un ticket<\/a> e proteggi il tuo sito oggi stesso.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Come aggiungere gli header di sicurezza HTTP in WordPress Gli header di sicurezza HTTP sono istruzioni che il server invia al browser per proteggerlo da&#8230;<\/p>\n","protected":false},"author":1,"featured_media":25832,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"Come aggiungere gli header di sicurezza HTTP in WordPress","_seopress_titles_desc":"Proteggi il tuo sito WordPress con gli header di sicurezza HTTP: X-Content-Type-Options, HSTS, X-Frame-Options e altri. Guida pratica con esempi per\u2026","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","footnotes":""},"categories":[1700],"tags":[],"class_list":["post-25831","post","type-post","status-publish","format-standard","has-post-thumbnail","category-sicurezza-wordpress"],"_links":{"self":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25831","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/comments?post=25831"}],"version-history":[{"count":0,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/posts\/25831\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/media\/25832"}],"wp:attachment":[{"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/media?parent=25831"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/categories?post=25831"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/soccorsowp.it\/blog\/wp-json\/wp\/v2\/tags?post=25831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}