La sanitizzazione degli input è un'operazione fondamentale nelle applicazioni che devono elaborare dati inseriti arbitrariamente dagli utenti. Diventa inoltre ancora più importante quando si devono proteggere le applicazioni destinate ad interagire con i database. Si pensi per esempio ad una piattaforma basata su PHP che invia i dati inseriti in un form all'interno di una base di dati MySQL. Questo linguaggio integra diverse funzioni native per la sanitizzazione. Il coding Vanilla può però allungare i tempi di lavoro, soprattutto quando si devono prevedere tutti i casi di input potenzialmente malevoli.
Cosa è PHP Sanitizer
Per questo motivo è possibile sfruttare una classe già pronta, come per esempio PHP Sanitizer, realizzata dallo sviluppatore Erland Muchasaj. Si tratta di uno script di una sola pagina che in appena 211 linee di codice mette a disposizione tutto quello che serve non soltanto per la sicurezza ma anche per il trattamento dei caratteri in alfabeti diversi da quelli occidentali.
Il suo ambiente di riferimento è quello delle applicazioni per le ricerche interne nei siti Web. Si tratta inoltre di una soluzione rilasciata sotto licenza Open Source (MIT License) il cui progetto è ospitato all'interno di un repository di GitHub.
PHP Sanitizer: installazione ed uso
A livello di scripting PHP Sanitizer è un'applicazione abbastanza semplice che deve parte del suo codice al modulo per le ricerche del CMS Drupal. Le funzioni PHP utilizzate sono quelle che ci si aspetterebbe da un'applicazione di questo genere. Quindi html_entity_decode()
per il decoding delle entità HTML, trim()
per la rimozione degli spazi inutili, str_replace()
per la sostituzione delle stringhe e così via.
Installare la classe nel proprio progetto è molto semplice, la procedura prevede di utilizzare Composer e la seguente istruzione:
composer require erlandmuchasaj/sanitize
Fatto questo PHP Sanitizer sarà pronto per l'utilizzo e provvederà a raccogliere le stringhe non sanitizzate restituendo in output delle stringhe ripulite da ogni elemento non consentito:
use ErlandMuchasaj\Sanitize\Sanitize;
$dirtyString = 'Hello - World';
$sanitizedString = Sanitize::sanitize($dirtyString);