![]() |
1
42
这真的很重要。
有两种方法可以沙盒python。一种是创造一个受限的环境(即很少的全球环境等),以及
另一种方法是解析代码,然后使用
另一种方法(因为你使用GAE,可能对你不起作用)是 PyPy sandbox . 虽然我自己还没用过,但有句话是说,这是唯一的 真实的 沙盒里的巨蟒。 根据您对需求的描述(这些需求支持变量、基本条件和函数调用(而不是定义)),您可以 可以 想要评估方法2并从代码中剔除所有其他内容。这有点棘手,但可行。 |
![]() |
2
6
Afaik可以在完全隔离的环境中运行代码:
但在这样的环境中,你几乎什么也做不了:(你甚至不能
|
![]() |
3
4
我不知道为什么没有人提到这一点,但是Zope2有一个叫做python脚本的东西,也就是说,限制python在沙盒中执行,没有任何文件系统访问权,可以访问由Zope安全机制控制的其他Zope对象,导入限制在一个安全的子集内。 总的来说,Zope是相当安全的,所以我想没有已知或明显的方法可以突破沙盒。 我不确定Python脚本是如何实现的,但是这个特性和2000年一样。 下面是蟒蛇脚本背后的魔力,以及详细的文档: http://pypi.python.org/pypi/RestrictedPython -它甚至看起来不依赖于Zope,因此可以独立使用。 注意,这不是为了安全地运行任意的Python代码(大多数随机脚本在第一次导入或文件访问时都会失败),而是为了在Python应用程序中使用Python进行有限的脚本编写。 这个答案是从我的评论到作为这个问题的复制品结束的一个问题: Python from Python: restricting functionality? |
![]() |
4
3
我将研究双服务器方法。第一个服务器是代码所在的特权Web服务器。第二个服务器是一个严格控制的服务器,它只提供Web服务或RPC服务,并运行不受信任的代码。您为内容创建者提供了自定义界面。例如,如果您允许最终用户创建项目,您将看到一个调用服务器的查找,其中包含要执行的代码和参数集。 这是治疗药水的抽象例子。
答案可能是
|
![]() |
5
2
嗯,这是一个思想实验,我不知道它是怎么做的:
你可以用
医生注意到
一般来说,这与Forum软件以及类似的将“safe”javascript或HTML e.t.c.列入白名单的做法是相似的,而且他们在历史上对所有逃犯的踩踏都有不良记录。但是你可能对巨蟒有更多的运气:) |
![]() |
6
2
你可能会对 Python language services 用于编写自己的分析器的libref部分。 |
![]() |
7
0
我认为你最好的选择是综合回答。 您将希望解析输入并对其进行消毒—例如,删除任何导入语句。 你可以用梅萨的 exec 示例(或类似的东西)只允许对您选择的内置变量执行代码-很可能是您自己定义的某种API,它提供程序员对您认为相关的功能的访问。 |
![]() |
8
0
你会发现一些想法 this wiki page 但看起来不容易做到。 |
![]() |
md.jamal · 如何确保telnet命令是否成功 6 年前 |
![]() |
user3742796 · 如何在键之间均匀分布总值数 6 年前 |
![]() |
VaTo · 用于检查是否可以访问多个服务器的脚本 6 年前 |
![]() |
as7951 · Awk脚本根据条件提供另一列中某些列的总和 6 年前 |
![]() |
JBaba · 如何在Unix中读取嵌套循环中的两个文件 6 年前 |
![]() |
Ajeetkumar · ksh-检查字符串是否有模式 7 年前 |