gpt4 book ai didi

python - 是否可以在 pypy 沙箱中使用 numpy 并写入文件?

转载 作者:行者123 更新时间:2023-11-28 16:37:37 25 4
gpt4 key购买 nike

我希望能够运行不受信任的 python 脚本,以使用 numpy 和 matplotlib 生成和保存图像。这可能吗?

所以:

  1. 在 pypy 沙箱中运行时,我可以导入 numpy 和 matplotlib 吗?我尝试将 numpy 站点包目录复制到我的临时沙箱目录中,但是当我尝试“导入 numpy”时出现此错误:“ImportError:没有名为 _numpypy 的模块”。

  2. 是否可以从 pypy 沙箱中写入文件?我认为该文件必须在 pypy 沙箱临时目录中,但即使这样我也会收到 IOError: "IOError: [Errno 2] No such file or directory: '/tmp/out.txt'".

这是我尝试在沙箱中运行的简单脚本,untrusted.py:

# This import will fail.
import numpy

# This works fine.
print 'SOMETHING'

# This works fine.
with open('/tmp/in.txt', 'r') as i:
print i.read()

# This throws an IOError.
with open('/tmp/out.txt', 'w') as f:
f.write('TESTING')

这是我用来运行它的命令:

./pypy/sandbox/pypy_interact.py --tmp=mydir ./pypy/goal/pypy-c untrusted.py

更多关于 pypy 沙箱的信息在这里: http://doc.pypy.org/en/latest/sandbox.html

非常感谢!

最佳答案

  1. 默认情况下,沙盒版本不包含 _numpy 模块,因为没有人仔细检查包含它是否安全。粗略地说,应该是,但是有很多细节可能会出错:例如,一些模糊的调用序列可能会导致越界内存访问(将此与沙盒方法进行对比)采用 PyPy 的其余部分,它对所有内部对象操作都是开箱即用的,因为它们是在 GC 管理的数组上完成的,而不是在原始 malloc()ed 内存上完成的)。还有一种风险是,_numpy 使用的 C 库中实现的某些晦涩函数会为攻击者提供逃逸点。总而言之,我会说该方法不适用于 _numpy(除非足够偏执的人会在每次 _numpy 更改后真正检查其安全性,这不太可能发生)。考虑改用操作系统级别的沙箱,使用常规 PyPy 或 CPython。

  2. 文件写入是文档中重要警告的一个例子,它说:“PyPy 方面的艰苦工作已经完成——您获得了一个完全安全的版本。只有实验性和未完善的是要使用的库这个来自常规 Python 解释器(CPython 或非沙盒 PyPy)的沙盒 PyPy。欢迎贡献。”

关于python - 是否可以在 pypy 沙箱中使用 numpy 并写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23767809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com