Votre question demande:
« Edit: La principale raison pour laquelle je le ferais est de les laisser utiliser leur propre javascript, et ont leur propre css et divs et ce non pour la sortie ».
Si vous autorisez les utilisateurs à fournir du code JavaScript arbitraire, la désinfection des données n'en vaut pas la peine. La définition de Cross-Site Scripting (XSS) est fondamentalement «les utilisateurs peuvent fournir JavaScript et certains utilisateurs sont mauvais».
Maintenant, certains sites ne permettent aux utilisateurs de fournir JavaScript et ils atténuent le risque dans l'une des deux façons suivantes:
- hôte du CMS de chaque utilisateur de ce sous un autre domaine. Blogger et Tumblr (par exemple, blogspot .com vs blogger.com) font cela pour empêcher les modèles de l'utilisateur de voler les cookies des autres utilisateurs. Vous devez savoir ce que vous faites et n'hébergez jamais le contenu de l'utilisateur sous le domaine racine.
- Si le contenu utilisateur n'est jamais partagé entre les utilisateurs, peu importe le script fourni par les utilisateurs malveillants. Cependant, CMS sont sur le partage afin que cela ne s'applique probablement pas ici
Il y a certains filtres Blacklist là-bas qui peuvent travailler, mais ils ne fonctionnent que aujourd'hui. Les spécifications HTML et les navigateurs changent régulièrement, ce qui rend les filtres presque impossibles à maintenir. Blacklisting est un moyen sûr d'avoir à la fois des problèmes de sécurité et de fonctionnement.
Lorsque vous traitez des données utilisateur, traitez-les toujours comme non fiables. Si vous ne le faites pas au début du produit et que vos scénarios changent, il est presque impossible de revenir en arrière et de trouver tous les points XSS ou de modifier le produit pour éviter XSS sans déranger vos utilisateurs.
S'il autorise un tiers Javascript, tout peut-il vraiment être sécurisé? –
peut-être pas, mais il peut faire sa part pour aider :) – warren