![]() |
1
8
下面有几个链接可以让您了解您面临的挑战: 还有一个死的谷歌代码项目在 http://code.google.com/p/sandbox-python/ |
![]() |
2
3
不,没有“安全”的python的生产就绪子集。python有一些沙盒模块,由于缺陷而被弃用。 您最好的选择是创建自己的解析器,或者使用syscall钩子和一个被监禁的帐户隔离python进程。 有些人可能会把你指给派比,但这是缓慢和未完成的。 |
![]() |
3
3
这个 PyMite VM 如果你只需要设置简单的变量、循环、条件和函数,就可以满足你的要求。pymite很小,用C编写,使用静态内存池,可以嵌入。它有一组非常有限的内置函数,易于配置。同样,唯一的标准库是字符串、dict、list和sys的部分实现。pymite vm是python-on-a-chip项目的一部分,因此它被设计为在微控制器上运行,但可以在posix风格的桌面系统上运行。缺点是,pymite没有其他Python实现那样广泛地消除bug。 |
![]() |
4
3
Pypy项目提供沙盒功能,请参见 http://doc.pypy.org/en/latest/sandbox.html . |
![]() |
5
2
蒂尼普 tinypy.org )被设计成一个小的、可嵌入的、用Lua样式编写的Python子集。由于Lua有一种创建沙盒的方式,我估计Tinypy可以沿着同一条静脉被切割。因为Tinypy的代码库非常小,所以很容易学习和理解如何改变周围的事物以满足您的需求。 |
![]() |
6
1
在标准的python库中进行了一些尝试,但是没有成功。见 Restricted Execution 详情。
|
![]() |
7
1
您的本地代码“在野外”同样容易受到这种攻击;它在机器代码中只是一个减速带,没有安全性。 如果你非常偏执并且想要一个更高的减速带,你可以让承载脚本实例的本地应用程序检查内容的散列。那么,不可能发生意外更改;只有经过深思熟虑的更改才会导致更新校验和的麻烦。你可以进一步检查它们是否也用公钥签名;然后只有黑客攻击你的本地应用程序才能让新的脚本进入。 但是沙盒呢?别担心! |
![]() |
8
1
你可以在Silverlight/Moasth上尝试Ironpython,就像 these guys 令人印象深刻的似乎是这样。解析器一号开发人员提供了大量关于这些类型的Ironpython应用程序的信息。 here . |
![]() |
9
1
我不太了解Java虚拟机或.NET运行时内的安全能力,但您可能需要考虑是否运行Python代码。 Jython 或 IronPython 可能会允许您获得额外的安全性。 |
![]() |
10
1
要理解你想做什么有点困难——细节不够。 你是本地应用的宿主,允许用户写插件吗?考虑使用操作系统级的解决方案,将python应用程序作为单独的运行时进程在jail/chroot/similar中运行,并通过套接字进行通信。 您是否希望您的客户托管本机应用程序并让“不受信任方”编写插件?上面的解决方案不起作用有什么原因吗?(例如,客户希望在没有此类选项的情况下部署在奇怪的OSS上…) 您是否希望同一个人托管本机应用程序和“不受信任的脚本”,并希望保护他们不受自己的攻击?在保护他们不写“os.remove”的意义上,让它做他们写的事情?你能解释一下为什么吗? 请注意,如果没有更严格的限制(最大CPU周期、最大内存、内存所有权问题…)单独进行沙盒处理通常是不够的?你想阻止什么样的恶意行为?请注意,在这里,OSS也有许多出色的功能(优先级、杀戮过程、ulimits),这些功能并不是所有沙盒环境都能复制的,而且肯定比OSS中的安全测试要少。(在我信任Pypy之前,我相信Linux不会有易碎的ulimits,而不会让恶意的编码人员占用无限的内存,这仅仅是因为Linux在野外受到了更多的攻击。) |
![]() |
11
0
|
![]() |
12
0
这听起来像你想要的: Reviving Python restricted mode .
python解释器具有内置的“受限”模式,通过更改
关于纯Python概念验证,请参阅他的前一篇文章 A Challenge To Break Python Security . |