2010-01-08 8 views
10

Firefox a le Sandbox et evalInSandbox(). Chrome a une exécution en sandbox dans ses scripts de contenu (ils appellent cela une exécution isolée). Je cherche la même chose dans une extension de navigateur IE.Exécution Javascript en mode bac à sable dans une extension Internet Explorer (BHO)

Je peux charger un fichier javascript, puis appeler 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 d'exécuter ma bibliothèque (qui inclut et est basé sur jQuery) dans un environnement en sandbox/isolé, tout en lui permettant de modifier le DOM comme s'il était en cours d'exécution sur la page. Jint semble prometteur, mais ne peut pas évaluer actuellement jQuery. (Ils peuvent l'analyser.)

Comment est-ce que je peux faire ceci?

+0

Le monde isolé de Chrome: http://code.google.com/chrome/extensions/content_scripts.html#execution-environment "Les scripts de contenu s'exécutent dans un environnement spécial appelé" monde isolé ". la page dans laquelle ils sont injectés, mais pas les variables ou fonctions JavaScript créées par la page. " – TelegramSam

+0

evalInSandbox de Firefox: https://developer.mozilla.org/En/Components.utils.evalInSandbox Cette méthode est utilisée par GreaseMonkey pour permettre l'exécution de javascript en dehors du contexte de la page. Passer dans le DOM en tant que 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 en mode bac à sable de planter des balises de script et de charger du contenu dans la page principale, mais cela ne me concerne pas. – TelegramSam

+0

Je ne suis pas convaincu qu'evalInSandbox fonctionne vraiment comme vous le pensez; voir l'exemple de code dans la section Sécurité. Bien que je ne sois pas un expert, je crois comprendre qu'evalInSandbox est principalement utile pour permettre à JS qui s'exécuterait autrement dans la zone Chrome de confiance totale de s'exécuter à la place dans la zone de confiance limitée du document actif. – EricLaw

Répondre

6

On dirait que vous êtes dans un pickle avec celui-ci.

  • Certaines personnes Microsoft disent que IE ne propose pas cette fonctionnalité
  • Certains qui disent qu'ils ont été en mesure de retirer ceci tenir le fermer et protéger leur sauce secrète
  • extension IE « Professional » Si vous avez des questions sur la construction de ce que vous parlez, refusez le poste

J'aimerais vraiment avoir de meilleures nouvelles, mais il me semble que cela pourrait prendre un petit miracle pour accomplir ce que vous cherchez ... ou peut-être beaucoup d'argent. :)

Votre meilleur pari va probablement être de trouver l'un des rares qui prétendent avoir été capable de le faire et de leur payer beaucoup pour partager le secret ou de reconsidérer pourquoi vous voulez vraiment ce que vous voulez et voir si vous ne peut pas l'accomplir d'une autre manière.

2

Vous pourriez trouver la peine d'examiner le Sandbox Microsoft Web au Live Labs: http://websandbox.livelabs.com/

Bien qu'il soit plus à part entière et en rapport avec mashups et comme il peut vous orienter dans la bonne direction.

+0

Le Microsoft Web Sandbox protège une page des scripts qui y sont chargés. J'ai besoin de protéger le script chargé de la page. C'est un bon projet, mais ça ne m'aide pas ici. – TelegramSam

1

Pouvez-vous élaborer un peu sur vos objectifs?

Je ne pense pas que vous ayez défini clairement ce que vous essayez d'accomplir. Si votre code a la capacité de modifier le DOM de la page, alors il est effectivement s'exécutant dans le contexte de la page. Il peut créer de nouveaux blocs de script pour effectuer toute action dangereuse ou non fiable qu'il pourrait accomplir s'il fonctionnait dans le même environnement d'exécution.

IE n'offre pas une fonctionnalité pour faire ce que vous demandez, et je ne suis pas convaincu que les fonctionnalités de Firefox et Chrome fonctionnent comme vous le souhaitez.

+1

Mes objectifs incluent l'exécution de javascript sur la page, sans que le javascript de la page puisse accéder aux méthodes et aux variables de mon javascript. Je veux aussi une nouvelle copie de javascript. Si la page a redéfini une méthode en javascript, je ne souhaite pas être soumis à leur redéfinition. Je ne m'inquiète pas de la capacité de mon script à planter des balises de script dans le DOM pour sortir du bac à sable. Ce que j'ai décrit est disponible dans Firefox et Chrome. Je posterai des liens vers la documentation pertinente. – TelegramSam

2

chose que vous recherchez est le moteur ActiveScript (http://en.wikipedia.org/wiki/Active_Scripting)

Je ne peux pas trouver des liens utiles maintenant, MSDN ne contient que la définition des interfaces (http://msdn.microsoft.com/en-us/library/ccd0zt2w(v=vs.85).aspx) Essayez de Google "Active Scripting" (pas « scripts d'action "!)

Vous devez implémenter l'interface IActiveScriptHost dans votre extension, créer un objet de« JScript », appeler SetSite et passer votre objet hôte, puis vous pouvez charger votre code js dans ce moteur et l'exécuter.

Cette technique est assez difficile en raison du manque de documentation à ce sujet. Si cela vous intéresse toujours, je peux vous envoyer des exemples en C++/ATL.

+0

Si vous pouviez mettre un exemple de code ici et peut-être dans GitHub ce serait vraiment utile. D'autant plus que, comme vous l'avez dit, la documentation est éparse. –

Questions connexes