[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 &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>");

 

 

 

Laisser une réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site est protégé par reCAPTCHA et le GooglePolitique de confidentialité etConditions d'utilisation appliquer.