Aller au contenu

Comment sécuriser les formulaires contre de l'injection Javascript


Sujets conseillés

Posté

Bonjour,

Dans une applie que je suis en train de construire ( "GeppettoRAS" sur SourceForge, en ligne d'ici quelques jours ), j'ai des formulaires ou l'utilisateur peu librement ajouter des tags HTML.

Pour sécuriser ces formulaires, j'utilise le code suivant :

strip_tags($txt, '<img><a>
<b><u><i>
<div><strong><em><strike><ol><ul><li><sup><small><code><blockquote><pre>');

Sauf que comment puis-je faire pour eviter que l'utilisateur n'ajoute des "onclick" et autres "onMouseOver" sur les tags qui restent autorises ?

Mon appli utilise force Ajax, donc ca deviendrait une grosse faille de securite si je ne peux controler ce genre de JS :whistling:

Merci et A+

Laurent

Posté

Merci Marvin, mais c'est là ou j'ai besoin d'aide car je ne suis pas assez calé en expression regulieres et mes essais font que je n'arrive pas a extraire uniquement les attributs des tags.

Par exemple, un phrase genre "ils ont dit" est elle aussi changee ... ce qui evidement n'aide pas :)

Posté

Aouch faudrait que je teste la regexp et là j'ai pas le temps. Il faut que tu définisses bien ce que tu recherches, ça doit être un truc du style "<([a-zA-Z]+)( [^>^])>".

Là, si tu fais sauter la 2ème parenthèse, ça te vire tout sauf la balise (ou ça doit ressembler à ça).

Posté

Aouch faudrait que je teste la regexp et là j'ai pas le temps. Il faut que tu définisses bien ce que tu recherches, ça doit être un truc du style "<([a-zA-Z]+)( [^>^])>".

Jusque la, pas de probleme ...

Là, si tu fais sauter la 2ème parenthèse, ça te vire tout sauf la balise (ou ça doit ressembler à ça).

mais comment je fais ca ?

Posté

Tu utilises preg_replace, et tu "oublies" le contenu de la 2ème parenthèse quand tu remplaces, ça donnerait qqch du style (pas testé du tout) :

$pattern = "<([a-zA-Z]+)( [^>^])>";
$replacement = "<$1>";
echo preg_replace($pattern, $replacement, $string);

Maintenant, tu commences un truc très rigolo : le test de ta regexp :D

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...