La récente dépréciation des constantes FILTER_SANITIZE_STRING et FILTER_SANITIZE_STRIPPED a suscité des inquiétudes parmi les développeurs PHP qui s'appuient sur elles pour la saisie. désinfection.
Qu'est-ce qui est obsolète et pourquoi ?
FILTER_SANITIZE_STRING et FILTER_SANITIZE_STRIPPED étaient auparavant utilisés pour supprimer les vulnérabilités XSS potentielles des chaînes d'entrée. Cependant, ces filtres présentaient un comportement déroutant et peu intuitif. FILTER_SANITIZE_STRING a supprimé tous les caractères entre '<' et la fin de la chaîne, supprimé les octets NUL et codé les guillemets simples et doubles.
La communauté PHP a déterminé que ces filtres provoquaient plus de confusion qu'ils n'en résolvaient, car les développeurs comprenaient souvent mal leur utilisation prévue. La désinfection des entrées est déjà gérée de manière adéquate par d'autres filtres, tels que FILTER_UNSAFE_RAW.
Options de remplacement
Il existe plusieurs options pour remplacer ces filtres obsolètes :
function filter_string_polyfill(string $string): string { $str = preg_replace('/\x00|<[^>]*>?/', '', $string); return str_replace(["'", '"'], [''', '"'], $str); }Rappelez-vous la règle d'or
Il est crucial de souligner que la désinfection des entrées ne doit pas être considérée comme une défense fiable contre les attaques XSS. Au lieu de cela, les développeurs devraient se concentrer sur l'échappement de la sortie pour empêcher l'injection de contenu potentiellement dangereux dans la page.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!