Best practice per la sicurezza sul Web

Best practice per la sicurezza web

Cloud CDN e Cloud Load Balancing possono aiutarti a rispettare le best practice per la sicurezza web, sia che tu stia fornendo contenuti da istanze di Compute Engine, da un bucket Cloud Storage o da un'origine esterna situata al di fuori di Google Cloud.

Imposta intestazioni di sicurezza

La specifica HTTP ha una serie di intestazioni che controllano quanto segue:

  • Comportamento del cliente
  • Come vengono incorporati i contenuti
  • Modalità di pubblicazione dei contenuti nei domini
  • Se utilizzare sempre TLS (HTTPS) per la connessione al dominio

Questi controlli sono in genere rappresentati come intestazioni delle risposte HTTP, che puoi impostare per ciascun backend (origine, in termini CDN) come intestazioni delle risposte personalizzate per il tuo bilanciatore del carico delle applicazioni esterno e il deployment di Cloud CDN.

Se utilizzi Cloud Storage e gestisci contenuti web dal tuo bucket, puoi utilizzare Cloud CDN davanti al tuo bucket di archiviazione per impostare le intestazioni di sicurezza web e memorizzare nella cache i contenuti più utilizzati.

Le intestazioni di sicurezza web più utili sono definite nella tabella seguente.

Nome intestazione Descrizione Esempio di utilizzo
Strict-Transport-Security (HSTS) Assicurati che i tuoi domini dispongano di certificati SSL (TLS) validi prima di impostare questa intestazione.

Informa i client che devono connettersi al tuo dominio direttamente tramite HTTPS (SSL/TLS), evitando il reindirizzamento da HTTP a HTTPS, che è più lento e comporta il rischio di un attacco person in the middle.

L'impostazione di questa intestazione è effettivamente irreversibile. Dopo aver memorizzato questa intestazione nella cache, i client dei browser moderni non tentano di stabilire connessioni non HTTPS e gli utenti non possono accedere ai domini per cui hanno ricevuto questa intestazione, anche se SSL non è attivo. Questo comportamento impedisce a un utente malintenzionato di eseguire il downgrade del protocollo sicuro a HTTP non protetto (noto come attacco di downgrade).

Quando pubblichi l'intestazione Strict-Transport-Security, presta attenzione quando aggiungi le istruzioni includeSubdomains o preload. Queste istruzioni richiedono che ogni sottodominio utilizzi HTTPS, inclusi eventuali siti interni sullo stesso dominio. Ad esempio, support.example.com quando pubblicato da example.com.

Richiedi ai client di connettersi direttamente tramite HTTPS per tutte le connessioni future, memorizzando nella cache questa istruzione per un massimo di due anni:

Strict-Transport-Security: max-age=3104000

X-Frame-Options Indica se un browser può eseguire il rendering di una pagina in un elemento <frame>, <iframe>, <embed> o <object>. Ciò consente di evitare attacchi di click-jacking, impedendo l'incorporamento dei tuoi contenuti in altri siti. Nega tutti gli iframe del tuo sito: X-Frame-Options: DENY

Consenti solo al tuo sito di eseguire l'iframe (incorporamento) in un iframe: X-Frame-Options: SAMEORIGIN

Content-Security-Policy Per valutare i criteri di sicurezza del contenuto del tuo sito, puoi utilizzare lo strumento CSP Evaluator di Google. Non consentire script in linea e carica solo script tramite HTTPS: Content-Security-Policy: default-src https:

Fai attenzione quando introduci nuove intestazioni di sicurezza nei siti web esistenti, perché potrebbero danneggiare script di terze parti, contenuti incorporati (ad esempio negli iframe) o altri aspetti dei tuoi siti. Prima di apportare modifiche al traffico di produzione, ti consigliamo di creare una seconda istanza del bucket di backend o del servizio di backend e testarlo.

Ulteriori informazioni sulle intestazioni e sulle best practice per la sicurezza web sono disponibili su web.dev e sul sito infosec di Mozilla.

TLS e gestione dei certificati

I certificati gestiti hanno le seguenti caratteristiche:

  • Vengono forniti senza costi.
  • Possibilità di eseguire facilmente il deployment nei bilanciatori del carico
  • Rinnovo automatico
  • Sono distribuite a livello globale in tutte le località perimetrali di Google

TLS fornisce l'autenticità convalidando che i dati non siano stati modificati in transito. I certificati TLS forniscono riservatezza assicurandosi che le intercettazioni non possano determinare cosa viene scambiato tra utenti e server. Questo è importante per la privacy e la sicurezza degli utenti.

Con i certificati SSL puoi sfruttare protocolli di trasporto moderni, come HTTP/2 e il protocollo QUIC di Google, che richiedono entrambi SSL (TLS). Questi protocolli migliorano direttamente le prestazioni dei contenuti web, la distribuzione di contenuti multimediali (come i video in streaming) e l'affidabilità sulle reti congestionate.

Google Cloud supporta i moderni protocolli TLS (come TLS 1.3) nei servizi Cloud Load Balancing e Cloud CDN.

Puoi utilizzare i criteri SSL per aumentare la versione minima di TLS. Ti consigliamo di aumentare la versione a TLS v1.2 se non devi supportare client meno recenti, ad esempio dispositivi incorporati o client non basati su browser meno recenti (più di 10 anni fa). A livello globale, TLS v1.0 e TLS v1.1 rappresentano meno dello 0,5% delle connessioni in Google Cloud. Se devi identificare o associare client specifici a versioni obsolete di TLS, puoi utilizzare la variabile {tls_version} in un'intestazione della richiesta. Puoi quindi registrare queste informazioni.

Passaggi successivi