如何运行可能不安全的用户代码?

时间:2016-09-12 23:38:14

标签: javascript c#

我正在编写一个程序,用于解释和运行一些用C#编写的用户代码。如何在运行时间内运行硬限制?

1 个答案:

答案 0 :(得分:1)

运行用户代码; EVER; 不安全(请参阅SQL注入,强制引用XKCD)。没有办法使安全(除了沙盒,此时你不再在你的计算机上运行他们的代码)。参见10个不可变的安全法则(TechNet

也就是说,你可以使用Process.WaitForExit的重载来使int(MSDN)“超时”并在一段时间后杀死进程(示例中为10秒):

Process myVeryUnsafeProc = new Process();
myVerUnsafeProc.Start();
if (!myVeryUnsafeProc.WaitForExit(10000))
{
   myVeryUnsafeProc.Kill();
}

请注意,javascript可能已经杀死了您的监控过程,并使整个练习毫无意义。我提到你只是不能安全地做到这一点吗?