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 ^^

 

var HTMLEntities = function(str){
var str = String(str), chars = {
'&':'&',
'"':'"',
'<':'<',
'>':'>'
};
for (var i in chars)
str=str.replace(new RegExp(i,'g'), chars[i]);
return str;
};

 

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