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!