Une donnée saisie dans un formulaire ne mérite jamais une confiance aveugle : un champ « nom » peut contenir du code HTML, une balise script, ou des caractères qui perturberaient une requête SQL. Assainir consiste à filtrer cette donnée à l’entrée, en retirant ce qui n’a pas sa place, avant même de songer à la stocker.
Fonctionnement dans WordPress
WordPress fournit toute une famille de fonctions dédiées : sanitize_text_field() retire les balises HTML et les espaces superflus d’une chaîne simple, sanitize_email() ne garde que les caractères valides d’une adresse électronique, sanitize_key() normalise une clé en minuscules sans caractères spéciaux. Chacune correspond à un type de donnée précis et ne doit pas être utilisée à la place d’une autre.
Exemple
$nom = sanitize_text_field($_POST['nom'] ?? '');
$email = sanitize_email($_POST['email'] ?? '');
if (is_email($email)) {
update_user_meta($user_id, 'contact_email', $email);
}
À ne pas confondre avec
L’assainissement se fait à l’entrée, au moment de recevoir la donnée, tandis que l’échappement se fait à la sortie, au moment de l’afficher : les deux sont complémentaires, ni l’un ni l’autre ne dispense de l’autre. Assainir n’est pas non plus valider : une donnée assainie est nettoyée de ses caractères dangereux, mais rien ne garantit qu’elle respecte un format attendu (une date, un nombre dans une plage), ce que seule la validation vérifie. Un développeur pressé confond parfois les deux étapes et se contente d’appeler sanitize_text_field() en pensant avoir sécurisé l’ensemble du traitement, alors qu’un affichage sans échappement plus loin dans le code reste tout aussi vulnérable.