首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python,安全,沙箱

Python,安全,沙箱
EN

Stack Overflow用户
提问于 2010-09-11 06:08:15
回答 9查看 9.2K关注 0票数 17

我想做一个网站,人们可以上传他们的Python脚本。当然,我想执行这些脚本。这些脚本应该会做一些有趣的工作。问题是,人们可能会上传脚本,这可能会损害我的服务器,我想阻止这种情况。在不损害我的系统的情况下运行任意脚本的选项是什么--实际上根本看不到我的系统?谢谢

EN

回答 9

Stack Overflow用户

发布于 2010-09-11 06:10:08

“不能这样做。”

运行任意(不受信任的)脚本和保持安全是矛盾的。您应该使用自定义内核、jails、vms等。

你可以看看http://codepad.org/about是如何做到这一点的,它有很多工作要做。

票数 7
EN

Stack Overflow用户

发布于 2011-07-08 22:12:58

我不知道在早期的版本中,在Python3中,你可以通过types.FunctionType创建可以访问自定义作用域的函数。

代码语言:javascript
运行
复制
def f():
  return __builtins__

f() # this will work because it has access to __builtins__
scope = {}
sandboxed = FunctionType(f.__code__,scope)
sandboxed()  # will throw NameError, builtins is not defined

返回的函数只能访问作用域字典中提供的任何内容。我想知道是否仍然有黑客围绕这一点。

票数 4
EN

Stack Overflow用户

发布于 2010-09-11 10:42:48

现在有相当多的web服务器运行着不可信的python代码:

  • http://codepad.org/ (可能是最臭名昭著的pastebin (以前是Javabat,更改名称以反映python addition)
  • http://appengine.google.com/ )(在谷歌的infrastructure)
  • http://www.spoj.pl/上托管Python代码臭名昭著的Sphere评委编码挑战

你可能想看看他们是如何解决问题的。

或者,您可能想看一种不同的方法:

  • http://pyjs.org/ - pyjamas python- to -javascript编译器(运行客户端,将安全问题转移到客户端)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3688708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档