我目前正在编写一个自动源代码验证工具。基本上,学生必须上传他们的 C# 源代码文件作为不同任务的解决方案。服务器在一个框架内编译这些文件,并根据不同的输入文件检查程序。如果程序生成的输出是有效的(等于预定义的输出),则程序是有效的并且学生获得该程序的分数。
但我认为我不能信任学生;)他们可能会尝试获取文件访问权限或在服务器上执行其他坏事。
我可以做些什么来将访问限制在最低限度?
我需要考虑什么?
已经想好了:
- 文件访问
- 最大限度。执行时间处理时间
- 启动其他程序
- 做网络的东西
- 反射
目前,我能想象的检查代码的唯一方法是使用正则表达式搜索“文件”、“网络”、“进程”等关键字。
但我很确定这是非常不安全的。
有什么建议么?