Cos’è l’HTTP secondo Cloudflare

Cos’è l’HTTP secondo Cloudflare

29/12/2021 0 By Redazione

In informatica oggi il termine “HTTP” è di uso comune. Tutti, o quasi, sappiamo che http significa HyperText Transfer Protocol ma pochi conoscono cosa significhi veramente il termine, cosa c’è in una richiesta http, che cos’è un metodo http, cosa sono le risposte http, quali sono i problemi di sicurezza che comporta il protocollo. L’HyperText Transfer Protocol è la base del World Wide Web (la ragnatela che avvolge tutto il mondo) e viene, essenzialmente, utilizzato per caricare le pagine web che utilizzano i collegamenti ipertestuali. In realtà http è un protocollo di rete che agisce a livello di applicazione. L’uso tipico di http prevede che un dispositivo connesso a internet effettui una richiesta a un server e ottenga un messaggio di risposta. Con l’aiuto di Cloudflare, l’azienda statunitense fondata allo scopo di rendere internet un posto migliore, cerchiamo di capire cosa significa una richiesta http e cosa è una risposta, ma anche in che modo il protocollo, forse il più utilizzato nel web, possa avere ripercussioni sulla sicurezza informatica.

La richiesta HTTP

Per caricare un sito internet i browser, o altri strumenti per la navigazione in internet, inviano al server una richiesta http che contiene una serie di dati codificati con diverse informazioni e secondo uno schema preciso che consentono di ricevere la risposta desiderata. La tipica richiesta http contiene la versione del protocollo, un URL, un metodo http, le intestazioni di richiesta, un corpo facoltativo. Dal punto di vista della sicurezza informatica ci interessa, in particolare, il metodo. Il metodo http, indica che cosa ci aspettiamo come richiesta dal server interrogato (identificato dal URL). La richiesta più comune è GET che come dice la traduzione (ottenere) si aspetta in cambio una serie di informazioni, in genere un codice HTML da convertire in una pagina web. Una Richiesta di tipo POST (inviare) informa il server che gli stiamo inviando una serie di informazioni come per esempio i campi di un  modulo, che saranno inclusi nel corpo facoltativo. Le intestazioni contengono una serie di notizie utili per il server: il tipo di browser utilizzato, che cosa ci aspettiamo in risposta, quali tipi di dati accetteremo e altre informazioni.

La risposta HTTP

Il client web, il nostro browser, riceve ad ogni richiesta http la relativa risposta che, normalmente, viene visualizzata dal client. Oltre a quello che desideravamo visualizzare il server ci fornisce una serie di informazioni molto interessanti: il codice di stato, le intestazioni della risposta e il corpo http (opzionale). In particolare il codice di stato ci indica in che modo la richiesta http è stata completata.  Si tratta di codici a tre cifre che possono iniziare con 1, 2, 3, 4 o 5. I codici che iniziano per 1 sono codici informativi, quelli che iniziano con 2 indicano il successo dell’operazione e quelli che iniziano con 3 indicano un reindirizzamento verso un altro sito o pagina. Molto interessanti i codici che iniziano con 4 e 5 che indicano, rispettivamente, un errore lato client (per esempio un indirizzo digitato male o errato che genera il classico 404 NOT FOUND) e errori lato server che ci informano che il server, per errori di programmazione o per esaurimento delle risorse non è stato in grado di soddisfare la nostra richiesta. Nelle intestazioni di risposta sono contenute informazioni utili al cliente per trattare i dati ricevuti come, per esempio, la lingua, la codifica dei caratteri, la data e l’ora del server e altro. Nel corpo della risposta http troviamo, infine, le informazioni richieste, in genere un codice html che visualizzerà la pagina. A differenza di quanto avveniva in passato quando una richiesta http creava e chiudeva una connessione TCP, nelle versioni di http dalla 1.1 la connessione è persistente nel senso che più richieste utilizzeranno la medesima connessione TCP migliorando il consumo di risorse del server. Ciò non toglie che una grossa serie richieste http verso lo stesso obbiettivo possano essere utilizzate per lanciare un attacco DoS o DDoS.