Maison > interface Web > js tutoriel > Comment puis-je décoder facilement les entités spéciales HTML tout en empêchant XSS ?

Comment puis-je décoder facilement les entités spéciales HTML tout en empêchant XSS ?

Barbara Streisand
Libérer: 2024-11-28 20:35:13
original
763 Les gens l'ont consulté

How Can I Easily Decode HTML Special Entities While Preventing XSS?

Décoder facilement les entités spéciales HTML

Décoder les entités spéciales HTML peut être une tâche déroutante. Considérez la réponse JSON suivante :

{
    "message": "We're unable to complete your request at this time."
}
Copier après la connexion

Remarquez l'apostrophe codée ('). Bien que la raison de cet encodage ne soit pas claire, votre principale préoccupation est de le décoder.

L'approche invasive de jQuery

Une méthode possible utilisant jQuery consiste à convertir la chaîne HTML en un div et extraire son contenu textuel :

function decodeHtml(html) {
    return $('<div>').html(html).text();
}
Copier après la connexion

Cependant, cette approche est quelque peu non conventionnel.

Une solution privilégiée : préserver les balises

Il existe une solution plus élégante qui préserve également les balises :

function decodeHtml(html) {
    var txt = document.createElement("textarea");
    txt.innerHTML = html;
    return txt.value;
}
Copier après la connexion

Cette approche consiste à créer un textarea, en définissant son innerHTML sur la chaîne HTML, puis en récupérant sa valeur, qui sera la valeur décodée contenu.

Exemple pratique avec la prévention XSS

Considérons l'exemple suivant :

Input:
Entity:&amp;nbsp;Bad attempt at XSS:<script>alert('new\nline?')</script><br>

Output:
Entity: Bad attempt at XSS:<script>alert('new\nline?')</script><br>
Copier après la connexion

Comme vous pouvez le voir, l'entité spéciale (  ) est décodé, tandis que la balise de script est conservée, garantissant ainsi la sécurité de votre application.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal