web-dev-qa-db-fra.com

Vue, par défaut, offre-t-il une sécurité ou une protection contre XSS?

J'essaie de comprendre comment protéger,

  • Angular
  • Vue
  • React

contre les attaques XSS. Lorsque je visite les documents officiels Angular,

https://angular.io/guide/security

, ça dit:

Pour bloquer systématiquement les bogues XSS, Angular traite toutes les valeurs comme non fiables par défaut. Lorsqu'une valeur est insérée dans le DOM à partir d'un modèle, via la propriété, l'attribut, le style, la liaison de classe ou l'interpolation, = Angular aseptise et échappe les valeurs non fiables.

et aussi:

Angular nettoie les valeurs non fiables pour le HTML, les styles et les URL; il n'est pas possible de nettoyer les URL des ressources car elles contiennent du code arbitraire. En mode développement, Angular affiche un avertissement de console quand il doit changer une valeur pendant le nettoyage).

et:

Angular reconnaît la valeur comme non sûre et la désinfecte automatiquement, ce qui supprime la balise mais conserve le contenu sûr tel que l'élément.

Lorsque je vais sur les documents officiels React,

https://reactjs.org/docs/introducing-jsx.html#jsx-prevents-injection-attacks

, il dit ce qui suit:

Il est sûr d'incorporer des entrées utilisateur dans JSX:

et:

Par défaut, React DOM échappe à toutes les valeurs incorporées dans JSX avant de les rendre. Ainsi, vous vous assurez de ne jamais injecter quoi que ce soit qui ne soit pas explicitement écrit dans votre application. Tout est converti en chaîne avant d'être rendu Cela permet d'éviter les attaques XSS (cross-site-scripting).

Mais pour Vue, je ne trouve rien dans leurs documents sur la protection XSS, ou quoi qu'ils puissent fournir par défaut.

Ma question: Est-ce que Vue, par défaut, offre un moyen de protection contre les attaques XSS, ou aurais-je besoin de chercher une solution tierce?

Lorsque je recherche ce sujet sur Google, je reçois de nombreux articles de blog et des sites faisant référence, par exemple, à ce projet de nettoyage de mon HTML:

https://github.com/punkave/sanitize-html

10
Niek Jonkman

Il n'y a pas de désinfectant intégré en vue. Selon Evan You (Créateur de Vue) commentaire sur un problème

un désinfectant intégré ajouterait un poids supplémentaire pour un cas d'utilisation rare (lorsque la plupart des cas d'utilisation de v-html sont pour du contenu de confiance); il est également trivial d'ajouter sanitize-html en définissant Vue.prototype. $ sanitize = sanitizeHTML puis faites v-html = "$ sanitize (html)".

Vérifiez cet article: https://github.com/vuejs/vue/issues/63

7
dagalti