我是一个编程课的助教,在这个课中,学生必须编写Python 3脚本来解决编程问题。作业由几个问题组成,对于每个问题,学生应该编写一个python程序,该程序将从标准输入读取输入,并将输出写入标准输出。对于每个问题,我们将使用隐藏的测试用例来评估它们的代码并对它们进行相应的分级。因此,我们的想法是尽可能地自动化这个过程。问题是如何在不影响作业运行的系统安全性的情况下实现整个框架来运行学生的作业,这很可能是我的笔记本电脑(它有Windows 10)。我需要为Python 3设置某种沙箱,限制执行时间、内存使用、禁止对文件系统的访问、联网、只从Python的标准库导入安全模块等等。
从概念上讲,我想要某种可以接收python脚本+一些测试用例的沙箱服务,该服务在安全的环境中针对测试用例运行python脚本(检测编译错误、时间限制超过错误、内存限制超过错误、尝试使用禁用库等)。并报告结果。因此,在Windows上,我只需编写一个简单的脚本,迭代所有学生提交的内容,并将此服务作为黑匣子来评估它们。
在Windows 10上有可能出现这种情况吗?如果是这样的话,是怎么做的?我的猜测是,像Docker或虚拟机这样的东西可能是有用的,但老实说,我并不确定,因为我在这些技术方面缺乏足够的专业知识,所以我愿意接受任何建议。
任何关于如何建立一个自动评估不受信任的Python 3代码提交的安全系统的建议将是非常感谢的。
发布于 2019-09-07 19:01:01
pysandbox是Python中一个沙箱的实现。它的目的是在受约束的环境中执行不受信任的Python代码(在本例中是用户提交的代码),这个环境可以由pysandbox部署程序进行配置。
有关更多信息,请参阅此链接:https://www.software.ac.uk/blog/2017-11-23-executing-python-code-submitted-web-service
https://security.stackexchange.com/questions/216372
复制相似问题