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