我正在考虑建立一个在线C#解释器的想法,有点像Codepad。现在有明显的安全问题:
我对C#的了解并不是无足轻重的,但我确信有很多关于它的知识,以及我没有想到的东西。你会注意什么?
一些准确性,我计划在使用Mono的小型Linux VPS上运行它。
答案 0 :(得分:4)
使用Mono的Compiler as service功能。它可以编译为Silverlight兼容的DLL(客户端配置文件)和has been,您可以checkout。这应该解决你对IO的一些担忧。
答案 1 :(得分:1)
反思浮现在脑海中,因为你可以从GetType()到Assembly
到你想要的任何东西。
答案 2 :(得分:1)
实际上用户代码可以做任何事情。处理特殊情况很难。在我看来,最好的方法是:
a)create sandbox appdomain仅具有执行权限。这可以确保很多事情,例如无法处理文件系统或调用本机库。
b)创建新流程并在其中启动您的appdomain。
然后严格监视进程以获取内存和CPU消耗。如果出现任何问题 - 杀死它。请注意,这是您可以杀死的进程,而不是appdomain。使用appdomain,您可以尝试卸载它,但如果在finally子句中运行的恶意代码则不起作用。
还有一些(我所知道的)问题:
总而言之,无论如何都存在风险。我也在考虑这个想法,这是当前的结果:rundotnet
答案 3 :(得分:1)
查看此链接,您将能够了解在线C#解释器的某些内容,尝试一些内容并阅读输出异常以了解它们是如何实现的。