2010-02-18 19 views
5

Me interesa saber cómo podría usar un lenguaje de scripts para ejecutar bloques simples de código de manera segura. El idioma/entorno del servidor podría ser C#/ruby ​​/ python/java (cualquier cosa menos c). Pero el lenguaje de script también podría ser algo oscuro como javascript/python/ruby ​​/ perl etc.Creación de scripts de espacio aislado

Lo que quiero es una forma de ejecutar secuencias de comandos con construcciones de programación tradicionales, es decir, condicionales/bucles/manipulación de fechas/matrices, etc. No quiero exponer cosas como IO, conectividad a secuencias http, bases de datos, etc.

Actualmente estoy buscando en spidermonkey usando el adaptador de python, pero me preguntaba si había otras opciones que debería considerar.

Respuesta

1

Puede hacerlo con .NET (VB, C#, cualquier idioma) a través de Code Access Security - establezca la política en la máquina para no permitir el acceso a las clases de Framework que desee.

Ver Setting Security Policy.

De manera predeterminada, la política permite que el código que se originó en la máquina local haga cualquier cosa; puede configurarlo para que, de forma predeterminada, el código no pueda llamar a las clases de E/S, no pueda hacer conexiones HTTP, y así sucesivamente.

+1

Al dorso de este comentario comencé a buscar en boo. Quería un lenguaje extensible así como también un buen dinamismo. De repente me di cuenta de que el CLR es una gran plataforma, y ​​creo que algún día C# será un dinosaurio tipo java pero el CLR vivirá por bastante tiempo. – Owen

2

Lua es muy fácil de codificar en sandbox. Aquí hay una referencia en el Lua wiki. Es un excelente lenguaje de scripting minimalista, fácil de integrar en otro código (C o C++). Por lo tanto, su host sería Lua incrustado en algún otro código (o simplemente el intérprete de Lua instalado de fábrica). Su lenguaje de scripting sería Lua.

Si no lo sabe, sin embargo, estoy seguro de que hay otras buenas soluciones que no requieren que aprenda un nuevo idioma.

Cuestiones relacionadas