Faille dans les expressions régulières

le 05/04/2007 à 23:15
Faille dans les expressions régulières
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

Commentaires

Ecrire
Bzh
le 06/04/2007 à 21:43
Bzh
Aaaaah ! Sacré faille !

Beaucoup de sites n'utilisent que les expressions régulières pour contrôler les entrées de leurs formulaires d'envoient de mails !

Il est donc très simple de modifier les entetes des mails !

Donc la solution ? Rajouter la closes "refuser \n" dans le masque ?
LA GLOBULE
le 06/04/2007 à 22:04
LA GLOBULE
Exactement :)
Mais dans l'article, le mec conseille d'utiliser le flag D pour ton expression régulière.
Et sinon, oui, c'est typiquement le genre de faille à contrôler lorsque l'on dev un webmail (je pourrais t'en parler des heures), sinon, c'est la porte ouverte aux chinois qui font se faire un grand plaisir à forger des mails et à spamer la planète.
zebden
le 07/04/2007 à 17:25
zebden
j'utilise le flag m qui veut dire multiligne. mais Visiblement D marche aussi ^^
zebdinou pour les intimes / Blog : http://www.zebden.fr
Ecrire

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours