2010-02-18 5 views
5

Je suis intéressé par la façon dont je pourrais utiliser un langage de script pour exécuter de simples blocs de code en mode bac à sable. Le langage/environnement hôte peut être C#/ruby ​​/ python/java (tout sauf c). Mais le langage de script pourrait également être quelque chose d'obscur comme javascript/python/ruby ​​/ perl etc.Script en bac à sable

Ce que je veux, c'est une façon d'exécuter un script avec des constructions de programmation traditionnelles, c'est-à-dire conditionnelles/boucles/manipulation de date/tableaux etc. Je ne veux pas exposer des choses telles que IO, connectivité aux flux http, bases de données etc

Je suis actuellement en train de regarder spidermonkey en utilisant l'adaptateur python, mais je me demandais s'il y avait d'autres options que je devrais envisager.

Répondre

1

Vous pouvez le faire avec .NET (VB, C#, n'importe quelle langue) via Code Access Security - définissez la stratégie sur la machine pour ne pas autoriser l'accès aux classes de Framework que vous aimez.

Voir Setting Security Policy.

Par défaut, la stratégie autorise le code provenant de la machine locale à faire quoi que ce soit; Vous pouvez le définir de sorte que, par défaut, le code ne puisse pas appeler les classes d'E/S, ne puisse pas effectuer de connexions HTTP, etc.

+1

Au dos de ce commentaire, j'ai commencé à regarder boo Je voulais un langage extensible ainsi qu'un bon dynamisme. Je réalise soudainement que le CLR est une excellente plate-forme, et je crois qu'un jour C# sera un java comme un dinosaure mais le CLR vivra pendant un certain temps. – Owen

2

Lua est très facile à coder en sandbox. Voici une référence sur le Lua wiki. C'est un excellent langage de script minimaliste, facile à intégrer dans un autre code (C ou C++). Donc votre hôte serait Lua intégré dans un autre code (ou seulement l'interpréteur Lua installé en usine). Votre langage de script serait Lua.

Si vous ne le savez pas, cependant, je suis sûr qu'il existe d'autres bonnes solutions qui ne vous obligent pas à apprendre une nouvelle langue.