我目前正在使用沙盒 PyPy 编写 Python 沙盒。基本上,沙箱通过提供一个“控制器”来工作,它将系统库调用映射到指定的函数。遵循在codepeak中找到的说明(通过设置过程)后,我意识到默认控制器不包括替换os.fstat()
,因此当我调用时崩溃open()
。具体来说,includedpypy/translator/sandbox/sandlib.py
不包含do_ll_os__ll_os_fstat
.
到目前为止,我已将其实现为:
def do_ll_os__ll_os_fstat(self, fd):
return os.fstat(fd)
这似乎工作正常。这安全吗?这会在沙箱中创建一个洞吗?