c# - 自动编译并运行第三方代码

标签 c# security auto-compile

我目前正在编写一个自动源代码验证工具。基本上,学生必须上传他们的 C# 源代码文件作为不同任务的解决方案。服务器在框架内编译这些文件,并根据不同的输入文件检查程序。如果程序生成的输出有效(等于预定义的输出),则程序有效,学生将获得该程序的分数。

但我认为我不能信任学生们;)他们可能会尝试获取文件访问权限或在服务器上执行其他不良行为。

我可以采取什么措施将访问限制在最低限度?
我需要考虑什么?

已经考虑过:

  • 文件访问
  • 最大。执行时间
  • 启动其他程序
  • 做网络方面的事情
  • 反射(reflection)

目前,我能想到的检查代码的唯一方法是使用正则表达式搜索“File”、“Net”、“Process”等关键字。

但我很确定这是非常不安全的。
有什么建议吗?

最佳答案

如果只是出于安全方面的考虑,您应该在沙箱中编译并运行程序。如果您可以使用虚拟机,请考虑使用虚拟机。扫描源代码以查找安全漏洞听起来是一项相当艰巨的任务(坦率地说,如果学生能够在正确输出代码的同时实现漏洞,那么您应该考虑加分:P)

关于c# - 自动编译并运行第三方代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10567689/

相关文章:

c# - 如何更改 axShockwaveFlash 的光标?

c# - 使用冒号读取 XML (:)

sql - PostgreSQL 密码生成器

c - 格式化字符串漏洞练习

从 2.1 升级到 2.2.4 后 Grails 自动编译中断

c# - 我可以在窗体上绘制所有控件吗?

c# 异步运行单线程?

php - 如何防止使用 .htaccess 或自定义 php.ini 覆盖设置

sass - 如何在部分更改时配置 Koala Sass 自动编译?