XSS de la prévention et de la .innerHTML

Quand j'permettre aux utilisateurs d'insérer des données en tant qu'argument à la JS innerHTML fonction comme ceci:

element.innerHTML = User provided variable”;

J'ai compris que pour éviter les attaques de type XSS, j'ai du codage HTML, et puis JS coder l'entrée de l'utilisateur, car l'utilisateur peut insérer quelque chose comme ceci:

<img src=a onerror='alert();'>

Que du HTML ou seulement JS encodage ne serait pas d'aide parce que la .innerHTML méthode que j'ai compris décode l'entrée avant de l'insérer dans la page. Avec HTML+JS encodage, j'ai remarqué que le .innerHTML décode le JS, mais le codage HTML le reste.

Mais j'ai été en mesure d'atteindre le même en double codage en HTML.

Ma question est: quelqu'un Pourrait fournir un exemple de pourquoi je devrais HTML coder et coder en JS, et pas le double de coder en HTML lors de l'utilisation de la .innerHTML méthode?

InformationsquelleAutor stanko | 2015-06-05