2011-07-28 5 views
7

Pour autant que je l'ai remarqué TinyMCE le fait de son propre Escaping de méta-caractères, et en utilisant htmlspecialchars() après brouilleront que la sortie et montrer < p> balises et similaires à la place de les rendre dans le navigateur. Il est facile de désactiver JavaScript et d'entrer du code malveillant qui sera rendu lorsqu'un autre utilisateur avec Javascript activé visitera le contenu.Protection contre les attaques XSS lors de l'utilisation TinyMCE

Donc, je dois utiliser la validation côté serveur, mais exactement - comment - puis-je faire correctement compte tenu des milliers de techniques XSS là-bas? Y at-il un moyen efficace qui fonctionne pour TinyMCE, tels que "en utilisant htmlspecialchars() avec TinyMCE?"

Jusqu'à présent, j'ai fait une liste blanche pour les balises HTML autorisés, remplacé tout javascript: et similaire :void dans le contenu pour essayer de se protéger contre inline tels que Javascript onClick="javascript:void(alert("XSS"));", mais je me sens cela ne suffit pas.

Un conseil sur le sujet serait très apprécié, mais rappelez-vous que certains contenus ont besoin de pour être affichés correctement sur la sortie, c'est pourquoi j'utilise TinyMCE en premier lieu. J'ai seulement besoin d'être protégé contre le XSS.

Aussi, tandis que sur le sujet; comment puis-je me protéger contre CSS XSS tel que style="background-image: url(XSS here);"?

Répondre

0

Pour .Net: http://msdn.microsoft.com/en-us/security/aa973814.aspx

je me bats aussi le feu avec le feu en utilisant:

$(".userpost").children().off(); 

Cela empêche les utilisateurs exploiteuses votre JavaScript existant. L'un des plus grands ennuis à la bibliothèque de Microsoft est qu'il ajoute "x_" devant toutes les classes. Ce qui est bien jusqu'à ce que quelqu'un édite une entrée existante et ajoute un autre x_ devant. Je viens de me débarrasser de x_ avec regex puisque le code ci-dessus rend le préfixe "x_" inutile.

Cela supprime le "x_" pour 3 classes VB.Net:

Regex.Replace(myHtml, "(<\w+\b[^>]*?\b)(class="")x[_]([a-zA-Z]*)()?(?:x[_])?([a-zA-Z]*)?()?(?:x[_])?([^""]*"")", "$1$2$3$4$5$6$7") 

Je suis sûr qu'il ya un nettoyeur façon de le faire.

Questions connexes