Je travaille sur l'implémentation d'un bug web JavaScript qui sera inséré dans les pages web de nos clients. L'une des fonctionnalités que nos clients aimeraient, est un moyen de transmettre des éléments du code HTML sur leurs pages Web à notre serveur via le bug Web. Nous utilisons JSONP et le serveur hébergeant le bogue web JavaScript est différent du serveur hébergeant la page we. L'idée de base est la suivante:Puzzle de sécurité JavaScript avec XSS
var element = document.getElementById(id);
var html = element.innerHTML;
//Encodes HTML into GET request www.example.com/script?html=encodedhtml
var url = getSrcUrl(html);
document.write(unescape("%3Cscript src='" + url + "' type='text/javascript'%3E%3C/script%3E"));
Le problème de sécurité est que tout le monde peut faire une demande de se rendre à notre serveur avec HTML arbitraire qui ne provient pas de la page Web qui héberge le bug Web. Y a-t-il un moyen de sécuriser cela? Je sais que nous pouvons vérifier les en-têtes HTTP pour le référent, mais cela peut facilement être falsifié. J'ai vu quelques idées où le serveur a passé un jeton unique qui devait être retourné dans la requête GET, mais il semble que cela pourrait aussi être falsifié. Mon intuition est que ce que nous essayons de faire ne peut pas être fait en toute sécurité, mais je voulais le lancer à la communauté pour voir s'il y a quelque chose d'intelligent qui peut être fait. Sinon, je vais devoir construire un scraper d'écran qui télécharge les pages directement à partir de nos clients et extrait le code HTML correspondant à leur page.
Merci pour toute aide!
EDIT
Pour être clair, les pages web de nos clients sont orientés public sans sécurité. En d'autres termes, n'importe quel internaute peut visiter la page et exécuter le bogue JavaScript qui soumet le fragment HTML.
EDIT 2
Une réponse acceptable est "ce qui est impossible"! Si tel est le cas, et vous donnez une bonne explication de pourquoi, je vais le choisir comme la réponse acceptée.
EDIT 3
Ce que nous construisons est une sorte de système Google Analytics pour nos clients. Nous essayons de suivre les visites d'objets uniques par chaque visiteur, puis de collecter automatiquement des informations sur cet élément via le fragment HTML. Nous allons ensuite insérer des informations sur l'élément sur d'autres pages en injectant le fragment HTML que nous avons collecté à partir de l'élément d'origine. Nous essayons de faire tout cela sans exiger de nos clients d'installer quoi que ce soit sur leurs serveurs et en incluant simplement un bug web JavaScript dans leur code HTML.
Que faites-vous avec le HTML? – Quentin
Les fragments HTML seront éventuellement injectés dans d'autres pages Web. Une vraie recette pour un désastre XSS si nous ne le faisons pas en toute sécurité! – user27478
Dans quelles conditions? Cela nous aiderait probablement à comprendre le problème si vous preniez du recul et expliquiez ce que vous essayiez d'accomplir plutôt que la façon dont vous essayiez de l'atteindre. – Quentin