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.