Analizzare e filtrare un’HTTP Request con PHP

Come riconoscere il tipo di richiesta HTTP ed applicare un filtro per limitare o meno la chiamata

Filtrare e limitare il tipo di richieste HTTP è una pratica comune nell’ambito della sicurezza informatica e della gestione del traffico di rete. I motivi principali per la quale sarebbe utile filtrare le richieste per tipo sono

  • Gestione del traffico: Limitare il tipo di richieste HTTP può essere utilizzato per gestire il traffico di rete e ridurre per esempio il sovraccarico del server che ospita la nostra applicazione. Si tratta di una prassi ben accetta nelle situazioni in cui il web server deve gestire un elevato volume di traffico e, soprattutto, se vogliamo ridurre la possibilità di un attacco di tipo DDoS.
  • Sicurezza: Questo è sicuramente il motivo principale per la quale sarebbe preferibile applicare un filtro alle richieste HTTP che riceve il nostro applicativo. Filtrare le richieste permette infatti di impedire che traffico malevolo possa raggiungere il server web.
  • Protezione dei dati sensibili: Filtrare e limitare le richieste HTTP è utile anche per proteggere i dati sensibili memorizzati sul server. Ad esempio, un’applicazione web potrebbe consentire solo a determinati utenti o tipi di richieste di accedere alle risorse sensibili e quindi ridurre la possibilità di databreach.
  • Ottimizzazione delle prestazioni: Collegandoci al primo punto, filtrare le richieste HTTP anche solo per tipo aiutano ad alleggerire il carico del server ottenendo quindi un’ottimizzazione delle prestazioni dello stesso.

La filtrazione e la limitazione delle richieste HTTP, quindi, è uno strumento fondamentale per garantire la sicurezza, la stabilità e l’efficienza di un’applicazione web e del server che la supporta. È una pratica che contribuisce a proteggere sia il server che i dati degli utenti, oltre che ad ottimizzare le prestazioni.

Se la nostra applicazione web non ha necessità di filtrare le HTTP Request per utenti o IP, sarebbe comunque utile proteggerla da richieste che siano diverse dalle tipiche GET e POST, nel caso di servizio fruibile da browser.

Le tipologie di richieste HTTP sono le seguenti

  • GET: Il metodo GET viene utilizzato per richiedere dati da una risorsa specificata. È il metodo più comune e viene utilizzato per recuperare informazioni dal server senza causare modifiche ai dati sul server.
  • POST: Il metodo POST viene utilizzato per inviare dati al server per essere elaborati. È comunemente utilizzato quando si inviano dati da un modulo HTML, come informazioni di login o dati di un modulo di registrazione.
  • PUT: Il metodo PUT viene utilizzato per aggiornare o sostituire completamente una risorsa esistente con i dati forniti. È utile per l’aggiornamento completo di risorse, ad esempio la sostituzione di un documento esistente con uno nuovo.
  • DELETE: Il metodo DELETE viene utilizzato per rimuovere una risorsa specificata dal server. L’uso di questo metodo comporta la cancellazione permanente della risorsa.
  • PATCH: Il metodo PATCH è utilizzato per applicare modifiche parziali a una risorsa. Invece di sostituire completamente la risorsa, questo metodo consente di specificare le modifiche da apportare.
  • HEAD: Il metodo HEAD è simile a GET, ma richiede solo l’invio delle informazioni sull’intestazione della risorsa, senza il corpo della risorsa stessa. Viene utilizzato per ottenere informazioni sulle risorse senza scaricarle effettivamente.
  • OPTIONS: Il metodo OPTIONS viene utilizzato per ottenere informazioni sulle opzioni e le funzionalità supportate da una risorsa o da un server.
  • CONNECT: Il metodo CONNECT viene utilizzato per stabilire una connessione di rete con una risorsa, spesso utilizzato per scopi di proxy.
  • TRACE: Il metodo TRACE viene utilizzato per ottenere un tracciamento diagnostico delle richieste HTTP e delle risposte. È utilizzato per scopi di debug e diagnostica.

Nel caso in cui stessimo sviluppando un’applicazione in PHP che prevede solo un’interfaccia web, è consigliabile applicare per lo meno dei filtri per permettere alle sole richieste GET e POST (o anche solo una delle due, secondo esigenze) di accedere alle risorse.

Per poter eseguire questo tipo di controllo con PHP, possiamo utilizzare la variabile superglobale $_SERVER['REQUEST_METHOD'] in un metodo come questo

function isRequestMethod($method) {
    return $_SERVER['REQUEST_METHOD'] === strtoupper($method);
}

che può essere utilizzato in questo modo

// Utilizzo della funzione
if (isRequestMethod('get')) {
    echo "La richiesta è di tipo GET.";
} elseif (isRequestMethod('post')) {
    echo "La richiesta è di tipo POST.";
} else {
    echo "La richiesta non è né GET né POST.";
}

Controlliamo ciclicamente il funzionamento dei link nei nostri articoli. Se noti dei link che non funzionano segnalacelo tra i commenti. Se hai apprezzato l'articolo considera l'idea di sostenere il blog anche con una piccola donazione. Grazie. Patreon / Ko-fi / Liberapay / Paypal

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *