Maison >interface Web >js tutoriel >Comment puis-je décoder facilement les entités spéciales HTML tout en empêchant 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." }
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(); }
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; }
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:&nbsp;Bad attempt at XSS:<script>alert('new\nline?')</script><br> Output: Entity: Bad attempt at XSS:<script>alert('new\nline?')</script><br>
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!