我是一个编码课程的助教,在这个课程中,学生们必须编写Python3脚本来解决编程问题。一个作业由几个问题组成,对于每个问题,学生应该编写一个python程序,该程序将从标准输入读取输入,并将输出写入标准输出。对于每个问题,都会有隐藏的测试用例,我们将使用它们来评估它们的代码并相应地对它们进行评分。因此,我们的想法是尽可能地使这个过程自动化。问题是如何实现整个框架来运行学生的作业,而不损害作业运行的系统的安全性,可能是我的笔记本电脑(它安装了Windows10)。我需要为Python 3设置某种沙箱,设置执行时间限制、内存使用限制、禁止访问文件系统、联网、仅限制从Python标准库导入安全模块等。
从概念上讲,我想要某种沙箱服务,它可以接收python脚本+一些测试用例,该服务在安全的环境中针对测试用例运行python脚本(检测编译错误、超出时间限制的错误、超出内存限制的错误、尝试使用禁用库等)。并报告结果。因此,在Windows中,我可以简单地编写一个简单的脚本,遍历所有学生提交的内容,并将此服务用作评估他们的黑盒。
在Windows10上有可能出现这样的情况吗?如果是这样的话,是怎么做的?我有根据的猜测是像Docker或虚拟机之类的东西可能有用,但老实说,我不是很确定,因为我在这些技术方面缺乏足够的专业知识,所以我对任何建议都持开放态度。
任何关于如何建立一个自动评估不受信任的Python3代码提交的安全系统的建议都将非常感谢。
发布于 2019-09-08 02:18:41
您正在寻找的是一个使用测试用例自动评估代码的系统。
您可以使用CMS来满足您的用例。它主要是一个管理编程竞赛的系统,但对于您在课堂上要完成的任务来说,它将是完美的。
https://stackoverflow.com/questions/57836198
复制相似问题