Maison >interface Web >js tutoriel >Comment décoder en toute sécurité les entités HTML en JavaScript pour éviter les vulnérabilités XSS ?

Comment décoder en toute sécurité les entités HTML en JavaScript pour éviter les vulnérabilités XSS ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-04 04:16:39758parcourir

How to Safely Decode HTML Entities in JavaScript to Prevent XSS Vulnerabilities?

Décodage des entités HTML en JavaScript

Dans ce fil de discussion, un développeur JavaScript a rencontré un problème où les entités HTML renvoyées par un backend XML-RPC étaient rendus littéralement dans le navigateur plutôt que d'être analysés au format HTML. Cet article explore les solutions fournies et approfondit les pièges et considérations potentiels lors de la suppression des entités HTML en JavaScript.

La réponse acceptée présentait une fonction de décodage des entités HTML, mais elle contenait un défaut important. En ne validant pas la chaîne d'entrée, cela rendait l'application vulnérable aux attaques de scripts intersites (XSS). Prenons l'exemple suivant :

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

Dans ce cas, la fonction décoderait l'entité HTML, mais elle exécuterait également le code JavaScript qui y est intégré, conduisant à une potentielle vulnérabilité XSS.

Pour résoudre ce problème, la discussion a introduit l'utilisation de DOMParser, qui fournit une méthode plus fiable pour analyser les chaînes HTML. En utilisant DOMParser, les entités HTML non échappées peuvent être décodées avec précision sans risque d'introduction de code malveillant.

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

Cette solution analyse efficacement la chaîne HTML et extrait le contenu en texte brut décodé, évitant ainsi les vulnérabilités XSS et garantissant une manipulation sécurisée. de données 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