我目前正在使用沙盒 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)
这似乎工作正常。这安全吗?这会在沙箱中创建一个洞吗?