gpt4 book ai didi

python - 限制 python 脚本访问 os 函数

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

我需要你的新想法,感谢任何帮助。

我正在实现一个系统,用户可以在其中上传自己的 Python 脚本并在其中一个服务器中执行它们。

我很注意安全问题。我想限制从此脚本对操作系统的任何访问。

首先,脚本使用 ast 解析器进行验证,以禁止访问许多最明显的关键字,如 execimport打开

不过,用户可以声明某些库的使用。其中一个重要的是 pandas 库(我还必须提供 matplotlibnumpy 等)。我已经实现了“代理”对象,模仿模块,但只提供对有限属性集的访问。例如,我可以提供一个代理对象 json,但不允许访问函数 loadsdumps

通过名称 ossys 等从任何对象获取属性的最明显的尝试也是不允许的。这样,当用户尝试使用 json.os 或像这样访问 os 模块时,我试图关闭一个漏洞。

这可以工作,但它是一个简单的盾牌。我可以审查所有模块并禁止访问大多数危险功能,但即使错过一个也可能导致潜在的损害。此外,某些模块可能会以一种棘手的方式访问,例如 pandas.tools.util.pd 将引用原始的 pandas 模块。我会花一年的时间来关闭一切..

我考虑过在文件系统级别限制访问,但脚本在主进程(基于 celery)中使用 eval 函数运行,并且具有相同的权限(和同一用户)作为主进程。理论上它可以读取所有源并将它们传递给用户。

我的一个想法是使用最少的源和权限集在单独的进程中运行脚本,并使用管道将数据传入/传出。但这将需要重构大量代码并且无法保证稳定性 - 我仍然需要大量代码才能使其正常工作。

最佳答案

RestrictedPython正是您所需要的。

关于python - 限制 python 脚本访问 os 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38839407/

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