Passa al contenuto principale

15. Security Considerations (Considerazioni sulla Sicurezza)

Questa sezione discute le considerazioni sulla sicurezza del protocollo HTTP/1.1.

15.1 Personal Information (Informazioni Personali)​

I client HTTP hanno tipicamente accesso a una grande quantità di informazioni personali (ad esempio, nome dell'utente, posizione, indirizzo e-mail, password, chiavi di crittografia, ecc.). Queste informazioni devono essere trattate con attenzione per prevenire divulgazioni accidentali.

Principali rischi:

  • Gli header User-Agent, Referer, From possono divulgare la privacy dell'utente
  • Le stringhe di query negli URI possono contenere informazioni sensibili
  • I file di log possono registrare dati sensibili

15.2 Abuse of Server Log Information (Abuso delle Informazioni di Log del Server)​

Gli operatori del server dovrebbero essere consapevoli che i file di log HTTP contengono informazioni personali degli utenti e dovrebbero quindi essere protetti allo stesso livello di altre informazioni sensibili.

15.3 Transfer of Sensitive Information (Trasferimento di Informazioni Sensibili)​

Come qualsiasi protocollo di trasferimento dati generico, HTTP non può regolare il contenuto dei dati che trasferisce, né può determinare in anticipo la sensibilità di una particolare richiesta.

Raccomandazioni:

  • Utilizzare HTTPS (HTTP over TLS/SSL) per trasferire informazioni sensibili
  • Non includere informazioni sensibili negli URI (possono essere registrate)
  • Utilizzare POST invece di GET per inviare dati di moduli sensibili

15.4 Encoding Sensitive Information in URI's (Codifica di Informazioni Sensibili negli URI)​

Poiché la fonte degli URI può non essere affidabile, i client HTTP devono fare attenzione quando includono dati sensibili negli URI. In particolare, quando gli URI contengono password o altre informazioni di autenticazione.

15.5 Location Headers and Spoofing (Header Location e Spoofing)​

Se un singolo server supporta più organizzazioni, quel server deve verificare i valori negli header Location e Content-Location per assicurarsi che un attaccante non possa utilizzare il server per generare risposte che sembrano provenire da un'altra organizzazione.

15.6 Authentication Credentials (Credenziali di Autenticazione)​

I client HTTP e gli user agent esistenti generalmente conservano le informazioni di autenticazione indefinitamente. HTTP/1.1 non fornisce un metodo per il server di origine di indicare al client di scartare queste credenziali memorizzate nella cache.

Raccomandazioni di sicurezza:

  • Utilizzare meccanismi di timeout di sessione
  • Fornire funzionalità di logout esplicite
  • Evitare di passare credenziali negli URI

15.7 Proxies and Caching (Proxy e Caching)​

I proxy HTTP sono intermediari che possono presentare potenziali rischi per la sicurezza. Le organizzazioni dovrebbero considerare le implicazioni sulla privacy e sulla sicurezza dell'accesso tramite proxy.

Questioni chiave:

  • I proxy possono vedere tutti i dati trasmessi
  • Le cache possono memorizzare informazioni sensibili
  • I log dei proxy possono registrare l'attività degli utenti

Misure di sicurezza della cache:

  • Utilizzare Cache-Control: private per prevenire la cache condivisa
  • Utilizzare Cache-Control: no-store per prevenire qualsiasi cache
  • Verificare la configurazione di sicurezza della cache

15.8 DNS Spoofing (Spoofing DNS)​

I client HTTP dipendono dal DNS per risolvere i nomi host in indirizzi IP. Gli attacchi di spoofing DNS possono portare i client a connettersi al server sbagliato.

Misure di protezione:

  • Utilizzare DNSSEC per verificare le risposte DNS
  • Utilizzare HTTPS per assicurare l'identità del server

15.9 Attacks Based On File and Path Names (Attacchi Basati su Nomi di File e Percorsi)​

Le implementazioni dovrebbero trattare Request-URI con attenzione per prevenire che client malintenzionati accedano a risorse che non dovrebbero essere accessibili tramite HTTP.

Attacchi comuni:

  • Attacchi di attraversamento del percorso (../../../etc/passwd)
  • Accesso a file speciali
  • Attacchi con link simbolici

Misure di protezione:

  • Normalizzare tutti i percorsi
  • Limitare le directory accessibili
  • Verificare i permessi dei file

La sicurezza di HTTP/1.1 dipende da:

  1. Sicurezza del livello di trasporto - Utilizzare TLS/SSL (HTTPS)
  2. Implementazione corretta - Seguire le migliori pratiche di sicurezza
  3. Configurazione appropriata - Limitare l'esposizione di informazioni sensibili
  4. Consapevolezza dell'utente - Educare gli utenti a riconoscere i rischi per la sicurezza

Nota importante: HTTP stesso è un protocollo stateless che non fornisce meccanismi di sicurezza integrati. La sicurezza deve essere implementata utilizzando HTTPS, meccanismi di autenticazione appropriati e pratiche di codifica sicure.