我有一个Web应用程序,允许用户输入要使用IronRuby执行的Ruby程序,并将结果输出到网页。
这是我用来创建IronRuby引擎并运行代码的代码:
var engine = Ruby.CreateEngine();
var source = engine.CreateScriptSourceFromString
(sourceCodeSpecifiedByUser, SourceCodeKind.Statements);
source.ExecuteProgram();
这存在安全问题,因为任何用户都可以运行执行不安全任务的Ruby代码(例如,枚举/修改文件)。
我想尝试将File.open
等字符串列入黑名单,Dir
一定会失败,所以我甚至没有考虑过这种可能性。
有没有办法以较低的权限运行IronRuby引擎以避免安全问题?