Firefox a le bac à sable et l'évaluantbox (). Chrome a une exécution de boîte à sandbox dans leurs scripts de contenu (ils appellent une exécution isolée). Je cherche la même chose dans une extension de navigateur IE. P>
Je peux charger un fichier JavaScript, puis appelez EvalScript (), mais le code s'exécute dans le même environnement que JavaScript qui existe sur la page. J'ai besoin d'un moyen de gérer ma bibliothèque (qui inclut et est basé sur jQuery) dans un environnement sandboxé / isolé, mais lui permet de modifier le DOM comme s'il s'exécutent sur la page. P>
Jint semble prometteur, mais ne peut pas évaluer actuellement JQuery. (Ils peuvent l'analyser.) P>
Comment puis-je faire cela? P>
4 Réponses :
Vous trouverez peut-être la peine de regarder la boîte à sable Web Microsoft sur les laboratoires en direct: http://websandbox.livelababs.com/ p>
Bien qu'il soit plus complètement foutu et lié aux mashups etc., il pourrait vous indiquer dans la bonne direction. p>
La Sandbox Web Microsoft protège une page des scripts chargés. J'ai besoin de protéger le script chargé de la page. C'est un bon projet, mais ne m'aide pas ici.
Pouvez-vous élaborer un peu sur vos objectifs? P>
Je ne pense pas que vous avez clairement défini ce que vous essayez d'accomplir. Si votre code a la possibilité de modifier la page DOM, alors il est effectivement est em> exécutant dans le contexte de la page. Il peut créer de nouveaux blocs de script pour effectuer une action dangereuse ou peu fiable qu'elle pourrait accomplir était-elle opérant dans le même environnement d'exécution. P>
Ie n'offre pas une fonctionnalité pour faire ce que vous demandez, et je ne suis pas convaincu que les fonctionnalités Firefox et Chrome fonctionnent de manière à ce que vous vous attendiez. P>
Mes objectifs incluent exécuter JavaScript sur la page, sans que la page JavaScript est capable d'accéder à mes méthodes et à mes variables de Mes JavaScript. Je veux aussi une nouvelle copie de JavaScript. Si la page a redéfini une méthode dans JavaScript, je ne veux pas être soumis à sa redéfinition. Je ne m'inquiète pas de la capacité de mon script à planter des étiquettes de script dans le DOM pour sauter du bac à sable. Ce que j'ai décrit est disponible dans Firefox et Chrome. Je posterai des liens vers la documentation correspondante.
On dirait que vous êtes dans un cornichon avec celui-ci. p>
J'aimerais vraiment avoir une meilleure nouvelle, mais on dirait que cela pourrait prendre un petit miracle pour accomplir ce que vous recherchez ... ou peut-être beaucoup d'argent. :) p>
Votre meilleur pari va probablement trouver l'un des rares qui prétendent avoir pu le faire et les payer beaucoup pour partager le secret ou reconsidérer pourquoi vous voulez vraiment ce que vous voulez et voyez si vous ne pouvez pas accomplir un autre moyen. P>
chose que vous recherchez est un moteur activeScript ( http://fr.wikipedia.org/wiki/active_scrips ) p>
Je ne peux pas trouver de liens utiles maintenant, MSDN contient uniquement des interfaces Définition ( http://msdn.microsoft.com/en-us/library/ccd0zt2w (v = vs.85) .aspx ) Essayez de google "Script actif" (pas "Script d'action"!) P>
Vous devez implémenter l'interface IACTICTICRIPTHOSTHOST dans votre extension, créer un objet de «JScript», appelez SetSite et transmettez votre objet hôte, puis vous pouvez charger votre code JS dans ce moteur et l'exécuter. P>
Cette technique est assez difficile en raison du manque de documentation à ce sujet. Si vous êtes toujours intéressé par cela, je peux vous envoyer quelques exemples en C ++ / ATL. P>
Si vous pouviez mettre un exemple de code ici et peut-être dans GitHub qui serait vraiment utile. Surtout depuis que vous avez dit - la documentation est clairsemée.
Le monde isolé de chrome: code.google.com/chrome/extensions/... < / a> "Les scripts de contenu exécutent dans un environnement spécial appelé monde isolé. Ils ont accès au DOM de la page, ils sont injectés dans, mais pas à aucune variables ou fonctions JavaScript créées par la page."
Firefox's EvalSandbox: développeur.mozilla.org/fr/Components.Utils.Evalinsandbox Cette méthode est utilisée par GreasemonKey pour autoriser l'exécution JavaScript en dehors du contexte de la page. En passant dans le DOM comme une variable permet au script de modifier le DOM sans permettre l'accès JavaScript de la page à ses propres méthodes et variables. Cela permet au code de Sandboxed de planter des balises de script et de charger le contenu de la page principale, mais empêchant ce n'est pas ma préoccupation.
Je ne suis pas convaincu que EvaliSandbox fonctionne vraiment comme si vous le pensez; Voir l'échantillon de code dans la section Sécurité. Bien que je ne sois pas un expert, ma compréhension est que Evalfeandbox est principalement utile pour permettre à JS qui exécuterait autrement dans la zone chromée de confiance intégrale à exécuter dans la zone de confiance limitée du document actif.
Je pense que tout le monde a peur de vous dire qu'ils ne connaissent pas la réponse à votre question. Ce ne sont pas des réponses. Je n'en ai pas non plus, mais je dis juste que