Maison >interface Web >js tutoriel >Comment supprimer en toute sécurité les entités HTML dans JavaScript et éviter les vulnérabilités XSS ?

Comment supprimer en toute sécurité les entités HTML dans JavaScript et éviter les vulnérabilités XSS ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-06 05:40:02615parcourir

How Do You Safely Unescape HTML Entities in JavaScript and Avoid XSS Vulnerabilities?

Récupérer les entités HTML en JavaScript : un guide complet avec des considérations de sécurité

Dans le domaine du développement Web, gérer les entités HTML peut parfois poser des problèmes. défis. Considérons un scénario dans lequel la communication backend XML-RPC aboutit à des réponses de chaîne telles que "". Cependant, l'insertion de ces chaînes dans HTML via JavaScript produit des résultats littéraux, rendant l'image souhaitée sous forme de chaîne de texte.

Pour résoudre ce problème, la suppression des entités HTML devient essentielle. Cependant, il faut faire preuve de prudence dans la réalisation de cette tâche. Les techniques qui consistent simplement à remplacer des entités HTML par leurs caractères correspondants, comme celles mentionnées sur paulschreiber.com, peuvent créer par inadvertance des vulnérabilités de Cross-Site Scripting (XSS).

Par exemple, considérons la chaîne : "

Cette chaîne comporte une balise HTML non échappée. Au lieu de décoder la chaîne, elle exécutera le code JavaScript contenu dans la chaîne, conduisant à un résultat potentiellement malveillant.

Pour éviter de telles vulnérabilités, l'utilisation de DOMParser est recommandée. . Pris en charge par les navigateurs modernes, DOMParser permet une annulation d'échappement en toute sécurité en tirant parti de la capacité du DOM à gérer l'analyse et l'extraction HTML :

function htmlDecode(input) {
  var doc = new DOMParser().parseFromString(input, "text/html");
  return doc.documentElement.textContent;
}

console.log(htmlDecode("<img src='myimage.jpg'>")) // "<img src='myimage.jpg'>"

console.log(htmlDecode("<img src='dummy' onerror='alert(/xss/)'>")) // ""

Dans le code fourni :

  • l'entrée représente la chaîne HTML. à décoder.
  • doc est l'objet de document DOM obtenu en analysant la chaîne d'entrée.
  • doc.documentElement.textContent extrait le contenu texte non échappé du document DOM, supprimant ainsi efficacement les entités HTML.

L'utilisation de DOMParser garantit que les entités HTML non échappées sont rendues sous forme de texte, empêchant ainsi l'exécution de code malveillant et protégeant contre les attaques XSS. Il est prudent d'utiliser cette technique chaque fois qu'il s'agit de chaînes HTML non fiables.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn