Maison > développement back-end > tutoriel php > Dépréciation de FILTER_SANITIZE_STRING de PHP : quelles sont les meilleures options de remplacement ?

Dépréciation de FILTER_SANITIZE_STRING de PHP : quelles sont les meilleures options de remplacement ?

Linda Hamilton
Libérer: 2024-12-01 11:14:10
original
273 Les gens l'ont consulté

PHP's FILTER_SANITIZE_STRING Deprecation: What Are the Best Replacement Options?

Dépréciation de FILTER_SANITIZE_STRING : une histoire de confusion et de conséquences inattendues

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 :

  • FILTER_UNSAFE_RAW : Cette valeur par défaut Le filtre de chaîne n'effectue aucun filtrage. Utilisez-le si vous souhaitez la valeur de la chaîne brute sans aucune modification.
  • htmlspecialchars() : Utilisez cette fonction pour coder des caractères spéciaux qui pourraient être exploités pour les vulnérabilités XSS. Cependant, n'oubliez pas de l'appliquer à la sortie, pas à l'entrée.
  • Polyfill personnalisé : Pour ceux qui ont besoin du comportement de filtrage spécifique de FILTER_SANITIZE_STRING et FILTER_SANITIZE_STRIPPED, un polyfill basé sur une expression régulière peut être créé. comme suit :
function filter_string_polyfill(string $string): string
{
    $str = preg_replace('/\x00|<[^>]*>?/', '', $string);
    return str_replace(["'", '"'], ['&#39;', '&#34;'], $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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal