首页 > 解决方案 > 执行任意代码,但模拟一切

问题描述

exec使用任意代码是危险的,因为该代码可能会产生不良的副作用。但是如果代码的所有调用都被模拟了,那么这个问题就消失了。问题是你需要知道代码使用了哪些函数和模块,然后一一模拟。如果我们正在处理未知代码,那么该集合可能是无限的。

有没有办法让 Python 模拟代码调用的所有内容,除了我提供的显式白名单?

例如,假设我想执行一个setup.py文件以确定正在传递的版本,但没有实际安装任何东西。我会让一切都被嘲笑,除了open(如果版本是从文件中提取的)。然后我可以安全地运行该文件,并且知道它除了打开文件之外不会做任何事情。

标签: python-3.xmocking

解决方案


推荐阅读