Migliorare la sicurezza dei siti web statici: una guida completa
I siti web statici, presentando contenuti pre-renderizzati, non necessitano di interrogare database, eseguire script complessi o di appoggiarsi a motori di runtime ogni qualvolta un utente richiede una pagina.
Questa caratteristica si traduce in tangibili benefici in termini di velocità di caricamento e sicurezza. Le pagine statiche riducono il carico sul server e sono meno esposte a vulnerabilità. Di conseguenza, i motori di ricerca tendono a valutare positivamente le pagine statiche rispetto a quelle dinamiche.
Gli esperti SEO preferiscono utilizzare contenuti statici quando possibile, per guadagnare un vantaggio competitivo in un ambiente dove anche una frazione di secondo può determinare il successo o il fallimento. La distribuzione di contenuti statici è diventata una priorità per gli specialisti di marketing, mentre il personale IT apprezza la riduzione dei punti deboli da monitorare.
Tuttavia, è fondamentale ricordare che nessun sistema è inviolabile al 100%. Pertanto, se si sceglie di utilizzare contenuti statici, è necessario adottare alcune misure di sicurezza per proteggerli adeguatamente.
Le intestazioni di sicurezza, un sottoinsieme delle intestazioni di risposta HTTP, sono pacchetti di metadati, codici di errore, regole di caching e altro che il server web invia insieme ai contenuti. Queste intestazioni comunicano al browser come gestire le informazioni ricevute. Non tutti i browser supportano tutte le intestazioni, ma un set di base comune garantisce una protezione minima contro exploit.
X-Frame-Options: SAMEORIGIN
L’intestazione X-Frame-Options è pensata per limitare i rischi associati all’utilizzo di iframe sul proprio sito. Gli iframe possono essere sfruttati per dirottare i clic e reindirizzare gli utenti a URL malevoli. Per prevenire questo tipo di abuso, è possibile usare diversi metodi.
La pratica migliore, raccomandata dall’OWASP (Open Web Application Security Project), è quella di impostare il parametro SAMEORIGIN. Questa configurazione autorizza l’uso di iframe solo da risorse della stessa origine. Altre opzioni sono DENY, che disabilita completamente gli iframe, e ALLOW-FROM, che consente l’uso di iframe solo da indirizzi specifici.
Per indicazioni sull’implementazione, fare riferimento alle guide di Apache e Nginx.
X-XSS-Protection: 1; mode=block
L’intestazione X-XSS-Protection ha lo scopo di proteggere i siti web dagli attacchi cross-site scripting (XSS). È possibile configurarla in due modi:
- X-XSS-Protection: 1
- X-XSS-Protection: 1; mode=block
La prima opzione, più permissiva, filtra gli script dalla richiesta al server, ma permette comunque il rendering della pagina. La seconda è più rigorosa: blocca l’intera pagina quando viene individuato uno script XSS. L’OWASP raccomanda quest’ultima come la pratica più sicura.
X-Content-Type-Options: nosniff
Questa intestazione inibisce l’uso del “MIME sniffing”, una funzione che consente al browser di interpretare i contenuti diversamente da quanto indicato nell’intestazione. Se è presente, il browser è obbligato a rispettare il tipo di contenuto specificato, senza tentare di dedurlo analizzandolo in anticipo.
Quando si usa questa intestazione, è necessario verificare che i tipi di contenuto siano definiti correttamente su tutte le pagine del sito web.
Content-Type: text/html; charset=utf-8
Questa riga viene inclusa nelle intestazioni di richiesta e risposta per le pagine HTML a partire dalla versione 1.0 del protocollo HTTP. Garantisce che tutti i tag vengano visualizzati correttamente dal browser, rendendo leggibile la pagina web.
Implementare Certificati TLS
Un certificato SSL/TLS è imprescindibile per qualsiasi sito web. Consente al server di crittografare i dati inviati al browser tramite il protocollo HTTPS, rendendo illeggibili eventuali intercettazioni. Questa protezione è fondamentale per la privacy dell’utente e la sicurezza del sito. Anche se un sito statico non memorizza dati personali, è necessario proteggere le comunicazioni da occhi indiscreti.
L’uso della crittografia è un requisito fondamentale per essere considerato un sito sicuro dalla maggior parte dei browser ed è un prerequisito per la conformità al Regolamento generale sulla protezione dei dati dell’UE (GDPR). Sebbene la legge non imponga esplicitamente l’uso di un certificato SSL, questo è il modo più agevole per rispettare i requisiti di privacy.
In termini di sicurezza, il certificato SSL autentica la proprietà del sito e previene la creazione di copie false. Permette al visitatore di verificare l’identità del proprietario e di navigare senza il timore di essere spiato.
I costi di un certificato non sono elevati. È possibile ottenerne uno gratuitamente tramite Zero SSL oppure acquistarne uno premium da SSL Store.
Utilizzare la Protezione DDoS
Gli attacchi Distributed Denial of Service (DDoS) sono sempre più frequenti. In questo scenario, una rete di dispositivi viene usata per sovraccaricare un server con un enorme flusso di richieste, fino a mandarlo in tilt. Anche un sito web con contenuti statici può diventare vittima di un attacco DDoS se non si prendono le adeguate precauzioni.
Il modo più semplice per implementare la protezione DDoS è affidarsi a un fornitore di servizi di sicurezza. Questi servizi offrono rilevamento delle intrusioni, protezione antivirus, scansione delle vulnerabilità e altro, liberando il proprietario del sito da preoccupazioni. Soluzioni complete di questo tipo possono essere costose, ma esistono opzioni più mirate come DDoS Protection as a Service (DPaaS). Si consiglia di chiedere al proprio provider di hosting se offre questo tipo di servizio.
Soluzioni più accessibili sono quelle basate sul cloud, offerte da aziende come Akamai, Sucuri o Cloudflare. Questi servizi individuano e analizzano gli attacchi DDoS, filtrandoli e deviandoli, per evitare che il traffico dannoso raggiunga il sito.
Quando si valuta una soluzione anti-DDoS, è fondamentale considerare la sua capacità di rete, ovvero l’intensità dell’attacco che la protezione è in grado di sopportare.
Evitare Librerie JavaScript Vulnerabili
Anche un sito statico può essere vulnerabile a causa dell’utilizzo di librerie JavaScript. Si stima che il 20% di queste librerie espongano un sito a rischi. È possibile utilizzare Vulnerabilità DB per verificare la sicurezza di una specifica libreria. Questo database fornisce informazioni dettagliate e indicazioni su numerose vulnerabilità note.
Oltre a controllare le vulnerabilità, si raccomanda di seguire le seguenti pratiche per le librerie JavaScript, per ridurre i rischi potenziali:
- Evitare server di librerie esterni. È preferibile archiviare le librerie sullo stesso server del sito. Se l’utilizzo di librerie esterne è inevitabile, evitare server inclusi in blacklist e controllare periodicamente la loro sicurezza.
- Utilizzare un sistema di gestione delle versioni e assicurarsi di usare sempre l’ultima versione di ogni libreria. Se la gestione delle versioni non è possibile, usare almeno versioni prive di vulnerabilità note. Retire.js è uno strumento utile per individuare versioni vulnerabili.
- Controllare periodicamente che il sito non utilizzi librerie esterne sconosciute. Ciò aiuta a identificare eventuali inserimenti di collegamenti a fornitori di librerie non desiderati da parte di hacker. Gli attacchi di iniezione sono rari in siti statici, ma è consigliabile effettuare questi controlli.
Implementare una Strategia di Backup
È fondamentale conservare copie di backup del contenuto di un sito statico a ogni modifica. Queste copie devono essere archiviate in modo sicuro e facilmente accessibili, per poter ripristinare il sito in caso di problemi. Esistono diversi metodi per eseguire il backup di un sito statico, classificabili in manuali e automatici.
Se il contenuto del sito non viene modificato spesso, una strategia di backup manuale può essere sufficiente. Sarà necessario effettuare un backup ogni volta che si apportano cambiamenti. Molti pannelli di controllo offrono opzioni per effettuare backup. In alternativa, è possibile usare un client FTP per scaricare tutto il contenuto su un dispositivo locale, per conservarlo in sicurezza e ripristinarlo all’occorrenza.
I backup automatici sono preferibili per ridurre il carico di gestione. Tuttavia, sono spesso offerti come funzionalità premium dai provider di hosting, aumentando il costo totale della protezione del sito.
Un’alternativa da considerare è l’utilizzo dell’archiviazione di oggetti cloud per i backup.
Scegliere un Fornitore di Hosting Affidabile
Un servizio di web hosting affidabile è fondamentale per il corretto funzionamento di un sito e per proteggerlo da violazioni. Le recensioni di web hosting generalmente si concentrano su velocità, uptime e assistenza clienti. Tuttavia, in termini di sicurezza, è necessario prestare attenzione ad altri aspetti e chiedere al provider chiarimenti prima di sottoscrivere un servizio:
- Sicurezza del software: è necessario conoscere le procedure per gli aggiornamenti software. Gli aggiornamenti vengono applicati automaticamente o sono sottoposti a un processo di test prima della distribuzione?
- Protezione DDoS: se questo tipo di protezione è incluso, è fondamentale conoscere i dettagli della sua implementazione, per verificare che soddisfi le esigenze del sito.
- Disponibilità e supporto SSL: nella maggior parte dei casi i certificati sono gestiti dal provider. È quindi necessario conoscere il tipo di certificato offerto e la politica di rinnovo.
- Backup e ripristino: molti provider offrono un servizio di backup automatico. È importante valutare i costi e confrontarli con lo sforzo necessario per mantenere autonomamente i backup.
- Protezione da malware: un provider affidabile dovrebbe proteggere i server con scansioni periodiche e monitoraggio dell’integrità dei file. Nel caso di hosting condiviso, è consigliabile che il provider utilizzi l’isolamento dell’account, per impedire la diffusione di malware tra i siti vicini.
- Protezione firewall: un provider di hosting può aumentare la sicurezza dei siti implementando un firewall che blocca il traffico ostile.
È importante selezionare una piattaforma di hosting per siti statici affidabile.
Adottare una Politica di Password Complesse
Un sito statico, non avendo un database o un sistema di gestione dei contenuti, ha meno nomi utente e password da gestire. Tuttavia, è necessario applicare una politica di password per l’hosting e gli account FTP usati per aggiornare i contenuti.
Alcune pratiche consigliate per le password includono:
- Cambiarle periodicamente.
- Impostare una lunghezza minima.
- Utilizzare combinazioni di lettere maiuscole e minuscole, caratteri speciali e numeri.
- Evitare di comunicarle via e-mail o messaggi di testo.
Inoltre, la password predefinita per gli account amministrativi deve essere cambiata immediatamente. È un errore comune che gli hacker possono facilmente sfruttare. Per non perdere le password, è consigliabile utilizzare un gestore di password per conservarle in modo sicuro.
Il Ritorno ai Contenuti Statici
Fino a qualche anno fa, i contenuti dinamici erano considerati la soluzione migliore, grazie alla facilità di modifica e aggiornamento. Tuttavia, la velocità è tornata a essere una priorità, e i contenuti statici hanno riacquistato interesse.
Le pratiche di sicurezza per i siti web devono essere rivalutate. Anche se ci sono meno aspetti da considerare, è importante non abbassare la guardia. Questa guida fornirà una base solida per creare una checklist di sicurezza e mantenere il sito statico protetto e funzionante.