Bonjour,
Un truc que je n’arrive pas à capter, est-ce qu’on peut générer une faille XSS, avec JavaScript ? donc sans PHP.
Je ne comprends pas encore comment fonctionne JS concernant cette faille.
premier exemple
Admettons que j’utilise la bibliothèque UAParser.js pour afficher les données de mon User Agent, j’affiche comme ça :
const uap = new UAParser();
const result = uap.getResult();
Texte : document.querySelector('#ua').innerText = escapeHTML(result.ua);
HTML
<span id="ua"></span>
document.querySelector('#ua').innerHtml = escapeHTML(result.ua);
Dans les deux cas, j’utilise :
function escapeHTML(str) {
const div = document.createElement("div");
div.appendChild(document.createTextNode(str));
return div.innerHTML;
}
Si un attaquant change son User Agent en javascript:alert('test');
, la faille va se créer ? ou alors les bibliothèques sont sécurisées ? comment savoir ? dois-t-on sécuriser nous même en amont ?
second exemple
On reste dans la même situation que le premier exemple, mais cette fois, sans bibliothèque, et là je récupère l’User Agent directement :
const userAgent = navigator.userAgent;
document.querySelector('#ua').textContent = escapeHTML(userAgent);
<span id="ua"></span>
- Dois-je utiliser un échappement de caractères ?
- Puis-je afficher directement via
innerHtml
? - Puis-je afficher directement via
textContent
?
Il y a d’autre exemple, si j’affiche les données EXIF d’une image, ou si je récupère les données du navigateur pour les afficher, etc.
En vous remerciant pour votre lecture.