destroyedlolo Posté 24 Avril 2011 Posté 24 Avril 2011 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 Merci et A+ Laurent
MarvinLeRouge Posté 25 Avril 2011 Posté 25 Avril 2011 Salut, Je dirais : recherche et suppression de tout ce qui est "onQuelquechose" dans les tags, par expression régulière.
destroyedlolo Posté 25 Avril 2011 Auteur Posté 25 Avril 2011 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
MarvinLeRouge Posté 26 Avril 2011 Posté 26 Avril 2011 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).
destroyedlolo Posté 28 Avril 2011 Auteur Posté 28 Avril 2011 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 ?
MarvinLeRouge Posté 29 Avril 2011 Posté 29 Avril 2011 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant