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'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!