[JavaScriptSecurity] Un simple HTMLEntities en Javascript !

Coucou à tous,
Pour ceux qui ne le savent pas,HTMLEntities est une fonction qui encode une chaîne de caractères, pour éviter que du code HTML soit interprétée ….
En gros …
Si vous êtes webmaster d’un site internet, et qu’un utilisateur laisse un commentaire du genre :
Je suis un gros <h1>Malade</h1>
Et bien HTMLEntities évitera que ce commentaire ne produise ceci :
Je suis un gros
Malade
En lieu et place, il affichera à la place ceci :
Je suis un gros <h1>Malade</h1>
Bien entendu, ça n’est pas seulement pour éviter des problèmes d’aspect esthétique …
Avoir la possibilité d’injecter et d’exécuter du HTML ou encore, du Javascript, sur un site, ça permet de faire plusieurs types d’actions plus ou moins malveillantes … mais rarement appréciées.
Pour la partie backend, PHP fait merveilleusement bien le boulot, mais pour la partie frontale (Javascript) … je suis tombé sur un paquet de solution, plus ou moins propre …
J’ai voulu partager avec vous un simple bout de code qui vous fera gagner beaucoup de temps ^^
[pastacode lang= »javascript » manual= »var%20HTMLEntities%20%3D%20function(str)%7B%0A%09var%20str%20%3D%20String(str)%2C%20chars%20%3D%20%7B%0A%09%20%20’%26’%3A’%26amp%3B’%2C%0A%09%20%20’%22’%3A’%26quot%3B’%2C%0A%09%20%20’%3C’%3A’%26lt%3B’%2C%0A%09%20%20’%3E’%3A’%26gt%3B’%0A%09%7D%3B%0A%09for%20(var%20i%20in%20chars)%20%0A%09%20%20%09str%3Dstr.replace(new%20RegExp(i%2C’g’)%2C%20chars%5Bi%5D)%3B%0A%09return%20str%3B%0A%7D%3B » message= » » highlight= » » provider= »manual »/]
Il ne vous reste plus qu’à rajouter tranquillement la liste des caractères que vous souhaitez remplacer ainsi que leurs équivalences HTML ;)
Vous pourrez même gérer vos accents ^^ (cf. caracteres-speciaux )
POC jsfiddle.net
HTMLEntities(« <h1<img src=this.src onerror=alert(‘fuuuuck’);>>test</</h1>h1>« );
Dyrk.org