我即将从一个不受信任的来源获得一堆 python 脚本。
我想确保代码的任何部分都不会损害我的系统,意思是:
(1)代码不允许导入ANY MODULE
(2)代码不允许读写任何数据、连接网络等
(每个脚本的目的是遍历一个列表,从给它的输入中计算一些数据并返回计算值)
在我执行这样的代码之前,我希望有一个脚本“检查”它,并确保那里没有任何危险的东西会伤害我的系统。
我想到了使用以下方法:检查没有使用'import'这个词(所以我们保证没有导入任何模块)
然而,用户(如果需要)仍然可以编写代码来读/写文件等(例如,使用 open
)。
那么问题来了:
(1) 在哪里可以获得 python 方法的“全局”列表(如 open
)?
(2) 是否有一些代码可以添加到发送给我的每个脚本(在顶部),这会使某些“全局”方法对该脚本无效(例如,任何使用关键字 open
会导致异常)?
我知道python沙盒有一些解决方案。但请尝试回答这个问题,因为我觉得这是更符合我需求的方法。
编辑: 假设我确保文件中没有 import
,并且没有可能的有害方法(例如 open
、 eval
等)在其中。我可以断定该文件是安全的吗? (你能想到其他可以运行内置方法的“危险”方式吗?)
最佳答案
这一点还没有提出,应该是:
You are not going to be able to secure arbitrary Python code.
除非您想解决安全问题,否则虚拟机是最佳选择。
关于python - 危险的 Python 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5517582/