我正在编写一个程序,用于解释和运行一些用C#编写的用户代码。如何在运行时间内运行硬限制?
答案 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可能已经杀死了您的监控过程,并使整个练习毫无意义。我提到你只是不能安全地做到这一点吗?