Stéphane Esser signale un problème classique de sécurité lors de la validation des données par les expressions régulières. Pour ancrer l'expression régulière, on utilise le méta caractère de début ^ (circonflexe), et le méta caractère de fin ($).
^[a-z]$
Toutefois, la documentation précise que $ identifie la fin de la ligne, sauf si c'est un retour à la ligne. Dans ce cas, le retour à la ligne n'est pas considéré comme la fin de la ligne : c'est le caractères précédent.
Il est alors possible de passer les filtres de validation, et d'injecter des nouvelles lignes. Les nouvelles lignes sont des caractères spéciaux pour les entêtes HTTP ou les entêtes mails, par exemple.
Holes in most preg_match() filters
^[a-z]$
Toutefois, la documentation précise que $ identifie la fin de la ligne, sauf si c'est un retour à la ligne. Dans ce cas, le retour à la ligne n'est pas considéré comme la fin de la ligne : c'est le caractères précédent.
Il est alors possible de passer les filtres de validation, et d'injecter des nouvelles lignes. Les nouvelles lignes sont des caractères spéciaux pour les entêtes HTTP ou les entêtes mails, par exemple.
Holes in most preg_match() filters
-
Auteur