对用户生成的Python代码运行检查
我正在尝试建立一个网站,用户可以在那里用Python或Octave编程。很像在网上学习网站上。用户在网站上输入代码,然后将其发送到Web服务器,该服务器处理代码并将响应返回给用户。我让它工作了,但我认为它非常不安全,因为我没有对代码运行任何检查。我读到Udacity将代码发送到沙盒集群,并对其运行自己的测试,以查看是否通过对用户生成的Python代码运行检查,python,security,Python,Security,我正在尝试建立一个网站,用户可以在那里用Python或Octave编程。很像在网上学习网站上。用户在网站上输入代码,然后将其发送到Web服务器,该服务器处理代码并将响应返回给用户。我让它工作了,但我认为它非常不安全,因为我没有对代码运行任何检查。我读到Udacity将代码发送到沙盒集群,并对其运行自己的测试,以查看是否通过 所以我的问题是:如果我没有对代码进行检查,会发生什么?我的整个网站会被一个聪明的恶意用户删除吗?我应该如何测试这段代码以确保“没有什么不好的事情发生”这取决于以下几点: 您
所以我的问题是:如果我没有对代码进行检查,会发生什么?我的整个网站会被一个聪明的恶意用户删除吗?我应该如何测试这段代码以确保“没有什么不好的事情发生”这取决于以下几点:
- 您是否以受限用户身份运行它
- 您是否有允许的最大运行时间
- 您是否允许或限制网络访问
至于保护它——让这段代码作为系统上权限最低的用户运行,或者更好地在专用VM/容器中运行 您可以找到一种在有限的python中运行它的方法,其中包含一组非常有限的核心库和内置程序—禁用网络、子进程、文件打开和线程 对于任何建议的方法,您需要调查其含义和缺点
最后一种选择是研究“pyjamas”——它在浏览器中通过转换为JS来运行python,以及它是否可以完全在浏览器中运行。这意味着用户代码和潜在的结果验证在他们的浏览器中运行,而不是在您的服务器上运行。要测试这一点几乎是不可能的(除非执行代码并查看发生了什么)。您希望对代码进行沙箱处理,以确保用户只能执行您希望他执行的操作。以下是一个安全的替代方案: