Estoy jugando con la idea de usar la capacidad de C# para compilar código según demanda como base de un lenguaje de scripting. Me preguntaba, ¿cómo puedo guardar los scripts que estoy ejecutando para que no puedan acceder al sistema de archivos, a la red, etc. Básicamente, quiero permisos restringidos en el script que se está ejecutando.Assembly.CreateInstance and security
pasos que he tomado:
CompilerResults r = CSharpCodeProvider.CompileAssemblyFromSource(source);
Assembly a = r.CompiledAssembly;
IScript s = a.CreateInstance(...);
s.EntryPoint(...);
¿Hay algo que impida que CallyourScriptHere() revierte todos los permisos establecidos por su ejemplo? – MarkP
'RevertAll' revierte los permisos de CAS configurados en el marco de pila actual solamente, por lo que al llamarlo a 'CallYourScriptHere' solo se deshacerían los cambios realizados en ese método. – MagnatLU
Esta no es una protección efectiva contra códigos potencialmente maliciosos. Consulte http://blogs.msdn.com/b/shawnfa/archive/2006/02/02/523390.aspx para saber por qué los modificadores de paseo de pila no se deben usar para sandboxing. –