Gennaio 10, 2025

filter_input() in PHP: Cos’è e A Cosa Serve?

Introduzione

In questo articolo, esploreremo la funzione filter_input() in PHP, uno strumento potente per la gestione e la validazione dei dati di input.

Spiegazione

La funzione filter_input() è utilizzata in PHP per ottenere una variabile esterna specifica e filtrarla. Questa funzione è particolarmente utile per la validazione e la sanificazione degli input provenienti dall’utente, come dati inseriti in moduli o query string nei parametri URL.

La sintassi di base di filter_input() è la seguente:

filter_input(type, variable_name, filter, options);

Dove:

  • type: Specifica il tipo di input (ad esempio, INPUT_GET, INPUT_POST, INPUT_COOKIE, ecc.).
  • variable_name: Il nome della variabile di input da filtrare.
  • filter: Il filtro da applicare (ad esempio, FILTER_SANITIZE_STRING, FILTER_VALIDATE_INT, ecc.).
  • options: Un array associativo di opzioni aggiuntive per il filtro (opzionale).

Quando si utilizza

La funzione filter_input() è particolarmente utile quando si gestiscono dati di input non fidati o provenienti da fonti esterne. È essenziale utilizzarla per prevenire vulnerabilità come SQL injection, cross-site scripting (XSS) e altre forme di attacco che possono derivare da dati di input manipolati.

È consigliabile utilizzare filter_input() ogni volta che si ricevono dati dagli utenti tramite moduli HTML, URL o cookie, per garantire che i dati siano correttamente validati e sanificati prima di essere utilizzati nel codice dell’applicazione.

Esempi

Vediamo alcuni esempi di utilizzo della funzione filter_input() in diversi scenari.

Esempio 1: Validare un numero intero

<?php
$age = filter_input(INPUT_GET, 'age', FILTER_VALIDATE_INT);

if ($age === false) {
    echo "L'età specificata non è valida.";
} else {
    echo "L'età inserita è: " . $age;
}
?>

In questo esempio, stiamo validando un input age passato tramite una query string. Utilizziamo FILTER_VALIDATE_INT per assicurarci che l’età sia un numero intero valido.

Esempio 2: Sanificare una stringa

<?php
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);

echo "Nome sanificato: " . $name;
?>

In questo caso, stiamo sanificando un input name inviato tramite un modulo POST. Utilizziamo FILTER_SANITIZE_STRING per rimuovere eventuali caratteri HTML o script dannosi.

Esempio 3: Verificare un indirizzo email

<?php
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);

if ($email === false) {
    echo "L'indirizzo email non è valido.";
} else {
    echo "Indirizzo email valido: " . $email;
}
?>

In questo esempio, verifichiamo se un input email è un indirizzo email valido utilizzando FILTER_VALIDATE_EMAIL.

Conclusione

La funzione filter_input() è uno strumento essenziale per gestire e filtrare i dati di input in PHP. Utilizzarla correttamente può migliorare la sicurezza e l’affidabilità delle applicazioni web prevenendo potenziali vulnerabilità.

Giorgio

Sono un Web Developer con oltre 20 anni di esperienza nello sviluppo di applicazioni web complesse. Specializzato in PHP, gestione di database relazionali e non relazionali, e integrazione di API, realizzo soluzioni robuste e scalabili per soddisfare esigenze aziendali e tecniche. Mi occupo di architetture server-side, ottimizzazione delle performance e automazione dei processi.