Webmaster Hub: Comment sécuriser les formulaires contre de l'injection Javascript - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Comment sécuriser les formulaires contre de l'injection Javascript Lorsque l'edition HTML est autorisee Noter : -----

#1 L'utilisateur est hors-ligne   destroyedlolo 

  • Groupe : Hubmaster
  • Messages : 792
  • Inscrit(e) : 05-juillet 04
  • Genre:Homme
  • Localisation:Nonglard

Posté 24 avril 2011 - 18:46

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><br><b><u><i><p><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
Amiga, UNIX, Ubuntu, NetBSD, Sharp, Apache, PHP, Ski, Vacances, Voyages
100 % dictionnary free - 1 mispelling by word
Viendez chez moi
0

#2 L'utilisateur est hors-ligne   MarvinLeRouge 

  • Groupe : Hubmaster
  • Messages : 771
  • Inscrit(e) : 22-novembre 04
  • Genre:Homme
  • Localisation:Toulon

Posté 25 avril 2011 - 09:47

Salut,

Je dirais : recherche et suppression de tout ce qui est "onQuelquechose" dans les tags, par expression régulière.
Lorsqu'un lapin rouge naît, on le nomme Marvin, en mémoire de Marvin 1er qui détruisit la ville de Zautamauxime. Puis on le bannit car les lapins rouges, ça porte malheur.
0

#3 L'utilisateur est hors-ligne   destroyedlolo 

  • Groupe : Hubmaster
  • Messages : 792
  • Inscrit(e) : 05-juillet 04
  • Genre:Homme
  • Localisation:Nonglard

Posté 25 avril 2011 - 17:39

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 :)
Amiga, UNIX, Ubuntu, NetBSD, Sharp, Apache, PHP, Ski, Vacances, Voyages
100 % dictionnary free - 1 mispelling by word
Viendez chez moi
0

#4 L'utilisateur est hors-ligne   MarvinLeRouge 

  • Groupe : Hubmaster
  • Messages : 771
  • Inscrit(e) : 22-novembre 04
  • Genre:Homme
  • Localisation:Toulon

Posté 26 avril 2011 - 10:38

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).
Lorsqu'un lapin rouge naît, on le nomme Marvin, en mémoire de Marvin 1er qui détruisit la ville de Zautamauxime. Puis on le bannit car les lapins rouges, ça porte malheur.
0

#5 L'utilisateur est hors-ligne   destroyedlolo 

  • Groupe : Hubmaster
  • Messages : 792
  • Inscrit(e) : 05-juillet 04
  • Genre:Homme
  • Localisation:Nonglard

Posté 28 avril 2011 - 22:03

Voir le messageMarvinLeRouge, le 26 avril 2011 - 10:38, dit :

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

Voir le messageMarvinLeRouge, le 26 avril 2011 - 10:38, dit :

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 ?
Amiga, UNIX, Ubuntu, NetBSD, Sharp, Apache, PHP, Ski, Vacances, Voyages
100 % dictionnary free - 1 mispelling by word
Viendez chez moi
0

#6 L'utilisateur est hors-ligne   MarvinLeRouge 

  • Groupe : Hubmaster
  • Messages : 771
  • Inscrit(e) : 22-novembre 04
  • Genre:Homme
  • Localisation:Toulon

Posté 29 avril 2011 - 10:46

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
Lorsqu'un lapin rouge naît, on le nomme Marvin, en mémoire de Marvin 1er qui détruisit la ville de Zautamauxime. Puis on le bannit car les lapins rouges, ça porte malheur.
0

#7 L'utilisateur est hors-ligne   destroyedlolo 

  • Groupe : Hubmaster
  • Messages : 792
  • Inscrit(e) : 05-juillet 04
  • Genre:Homme
  • Localisation:Nonglard

Posté 29 avril 2011 - 20:46

Ok, merci, je vais essayer ...
Amiga, UNIX, Ubuntu, NetBSD, Sharp, Apache, PHP, Ski, Vacances, Voyages
100 % dictionnary free - 1 mispelling by word
Viendez chez moi
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)