Dyrk.org
Do You Really Know

[JavaScriptSecurity] Un simple HTMLEntities en Javascript !

Publié le 12 juillet 2016 par #Ro0t

 

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 &lt;h1&gt;Malade&lt;/h1&gt;

 

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>« );