Aller au contenu

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


destroyedlolo

Sujets conseillés

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

Lien vers le commentaire
Partager sur d’autres sites

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 :)

Lien vers le commentaire
Partager sur d’autres sites

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).

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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