Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对用户生成的Python代码运行检查_Python_Security - Fatal编程技术网

对用户生成的Python代码运行检查

对用户生成的Python代码运行检查,python,security,Python,Security,我正在尝试建立一个网站,用户可以在那里用Python或Octave编程。很像在网上学习网站上。用户在网站上输入代码,然后将其发送到Web服务器,该服务器处理代码并将响应返回给用户。我让它工作了,但我认为它非常不安全,因为我没有对代码运行任何检查。我读到Udacity将代码发送到沙盒集群,并对其运行自己的测试,以查看是否通过 所以我的问题是:如果我没有对代码进行检查,会发生什么?我的整个网站会被一个聪明的恶意用户删除吗?我应该如何测试这段代码以确保“没有什么不好的事情发生”这取决于以下几点: 您

我正在尝试建立一个网站,用户可以在那里用Python或Octave编程。很像在网上学习网站上。用户在网站上输入代码,然后将其发送到Web服务器,该服务器处理代码并将响应返回给用户。我让它工作了,但我认为它非常不安全,因为我没有对代码运行任何检查。我读到Udacity将代码发送到沙盒集群,并对其运行自己的测试,以查看是否通过


所以我的问题是:如果我没有对代码进行检查,会发生什么?我的整个网站会被一个聪明的恶意用户删除吗?我应该如何测试这段代码以确保“没有什么不好的事情发生”

这取决于以下几点:

  • 您是否以受限用户身份运行它
  • 您是否有允许的最大运行时间
  • 您是否允许或限制网络访问
作为根用户的恶意代码可能会删除您的服务器内容。恶意的非根代码代码会找到提升的方法,但仍然会造成伤害。 非根代码可以使用或找到其他方法来使用所有可用的服务器资源。 无限制代码可能会对web资源发起拒绝服务攻击。它可能会抓取您的内部网络,并将详细信息发布给恶意个人,以提供进一步信息,从而进行更协调的攻击

通过文件和子流程访问,它可以写出x86或C代码,组装/编译/链接并运行它


至于保护它——让这段代码作为系统上权限最低的用户运行,或者更好地在专用VM/容器中运行

您可以找到一种在有限的python中运行它的方法,其中包含一组非常有限的核心库和内置程序—禁用网络、子进程、文件打开和线程

对于任何建议的方法,您需要调查其含义和缺点


最后一种选择是研究“pyjamas”——它在浏览器中通过转换为JS来运行python,以及它是否可以完全在浏览器中运行。这意味着用户代码和潜在的结果验证在他们的浏览器中运行,而不是在您的服务器上运行。

要测试这一点几乎是不可能的(除非执行代码并查看发生了什么)。您希望对代码进行沙箱处理,以确保用户只能执行您希望他执行的操作。以下是一个安全的替代方案: