Desidera proteggere al meglio il Suo sito web da attacchi diffusi come cross-site-scripting e clickjacking? In tal caso Le consigliamo di utilizzare le intestazioni di sicurezza HTTP. In questo articolo Le illustriamo come funzionano queste intestazioni e come integrarle nel Suo sito web.
Introduzione
Quando accede a un determinato sito web dal Suo browser, il server responsabile invia al Suo dispositivo non solo il contenuto della pagina, ma anche diversi metadati attraverso il sito web. Una parte di questi metadati sono le intestazioni di sicurezza HTTP (HTTP security header), che comunicano al browser del visitatore come deve aprire il sito web.
Con l’aiuto delle intestazioni di sicurezza, il sito web può essere protetto meglio da diversi tipi di attacchi, il che a sua volta aumenta la sicurezza.
Tipi di intestazioni di sicurezza
Vi è tutta una serie di diverse intestazioni di sicurezza. Ogni intestazione è progettata per un tipo specifico di attacco. Di seguito Le illustriamo le principali intestazioni rilevanti ai fini della sicurezza.
Content-Security-Policy (CSP)
Questa intestazione definisce quali contenuti dinamici (ad es. JavaScript, immagini, CSS) vengono caricati sul Suo sito web e da quale URL possono provenire. L’intestazione Content Security Policy è finalizzata alla difesa dagli attacchi cross-site-scripting (XSS), che comportano l’esecuzione di codici non sicuri o dannosi su un sito web.
La seguente intestazione Content Security Policy stabilisce che solo i contenuti provenienti dallo stesso server del sito web possono essere caricati:
Content-Security-Policy: default-src 'self'
X-Content-Type-Options
Questa intestazione stabilisce se il browser è autorizzato a indovinare automaticamente i formati di file nel caso in cui il server del Suo sito web non li indichi esplicitamente. Impostando questa intestazione si evita che il browser interpreti formati di file inaspettati e potenzialmente dannosi.
La seguente linea guida stabilisce che i formati di file non devono essere indovinati:
X-Content-Type-Options: nosniff
Referrer-Policy
Questa intestazione definisce quali informazioni sull’origine di una richiesta vengono trasmesse dal Suo sito web. Con un link in uscita sul Suo sito web, il sito web di destinazione memorizza per impostazione predefinita il Suo dominio come origine della richiesta. L’intestazione Referrer-Policy consente di stabilire quali informazioni trasmettere ai server esterni e serve quindi in primo luogo alla protezione dei dati.
La seguente linea guida impedisce la divulgazione delle informazioni sull’origine di una richiesta:
Referrer-Policy: no-referrer
HTTP Strict-Transport-Security (HSTS)
Questa intestazione comunica al browser che il sito web può essere visitato solo tramite connessione crittografata (HTTPS). In questo modo si evita l’intercettazione delle comunicazioni tra il browser e il server.
La seguente linea guida stabilisce che il sito web, inclusi tutti i sottodomini, può essere visitato solo con HTTPS. La regola è valida per un anno (31 536 000 secondi) e il dominio è registrato nella preload list (vedere sezione Registrare il sito nella preload list).
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Frame-Options
Questa intestazione impedisce che le pagine del sito web possano essere caricate in un altro sito web sotto forma di iFrame. In questo modo si evitano i cosiddetti attacchi clickjacking, in cui i Suoi contenuti vengono incorporati in un sito web dannoso.
La seguente linea guida stabilisce che i Suoi contenuti possono essere incorporati esclusivamente su pagine all’interno del Suo sito web:
X-Frame-Options: SAMEORIGIN
Permissions-Policy
Questa intestazione Le consente di impostare l’accesso a determinate funzioni e API del Suo sito web. Tra questi rientrano, ad esempio, l’utilizzo della telecamera (camera
) o del microfono (microphone
), la visualizzazione a schermo intero (fullscreen
) o l’accesso alla posizione (geolocation
). In questo modo si evitano attacchi come XSS e clickjacking e allo stesso tempo si aumenta la sicurezza dei dati dei visitatori.
La Permission-Policy è strutturata sempre secondo il seguente modello:
Permissions-Policy: <directive>=(<allowlist>), <directive>=(<allowlist>)
Aggiungere le intestazioni di sicurezza al sito web
Integrare le intestazioni di sicurezza
Le intestazioni di sicurezza HTTP vengono integrate tramite il file .htaccess. Se utilizza un CMS come WordPress, può utilizzare un plugin (ad es. Yoast SEO, w3 Total Cache). Tuttavia, può anche modificare direttamente il file, ad esempio tramite l’Explorer nel Pannello di Controllo Hostpoint oppure tramite un collegamento FTP o SSH.
Inserisca nel file le Sue intestazioni di sicurezza HTTP seguendo la seguente struttura:
<IfModule mod_headers.c>
Header set [nome e valore dell’intestazione]
</IfModule>
Il seguente esempio mostra les intestazioni di sicurezza di un sito web WordPress:
<IfModule mod_headers.c>
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
Header set X-Content-Type-Options nosniff
Header set X-Frame-Options DENY
Header set Referrer-Policy no-referrer
Header set Content-Security-Policy "base-uri 'self';form-action 'self';frame-ancestors 'self';font-src 'self';"
</IfModule>
Strumenti di controllo
Con i seguenti strumenti può visualizzare le intestazioni di sicurezza del Suo sito web:
- Webbkoll: https://webbkoll.5july.net/it/
- Security Headers by Snyk: https://securityheaders.com/
Registrare il sito nella preload list
Se ha aggiunto l’intestazione per HTTP Strict-Transport-Security (HSTS), Le consigliamo di includere il Suo sito web anche nella preload list. In questo modo Si assicura che ogni comunicazione con il Suo sito web sia crittografata sin dalla prima consultazione.
La preload list gestita da Google Chrome è utilizzata dalla maggior parte dei grandi browser web (ad es. Firefox, Edge, Safari). L’iscrizione è gratuita.
Ulteriori informazioni
Sulle pagine seguenti trova ulteriori informazioni utili sull’argomento:
- https://it.wikipedia.org/wiki/HTTP_Strict_Transport_Security
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers
Per richieste di supporto la preghiamo di usare invece questo modulo.