危险的Python关键字?
我即将从一个不可信的来源获取一堆Python脚本。
我想确保这些代码没有任何部分会对我的系统造成伤害,也就是说:
(1) 代码不允许导入任何模块
(2) 代码不允许读取或写入任何数据,连接网络等
(每个脚本的目的是循环遍历一个列表,从给定的输入中计算一些数据,并返回计算的值)
在我执行这些代码之前,我想有一个脚本来“检查”它,确保里面没有任何可能伤害我的系统的东西。
我想到了以下方法:检查代码中是否使用了' import '这个词(这样就可以保证没有模块被导入)
然而,用户仍然可以编写代码来读取/写入文件等(比如使用open
)。
那么问题来了:
(1) 我在哪里可以找到一个Python方法的“全局”列表(比如open
)?
(2) 有没有什么代码可以添加到每个发送给我的脚本的顶部,使某些“全局”方法在该脚本中无效(例如,任何使用open
的地方都会导致异常)?
我知道有一些Python沙箱的解决方案,但请尝试回答这个问题,因为我觉得这更符合我的需求。
编辑:假设我确保文件中没有import
,并且没有可能有害的方法(如open
、eval
等)。我可以得出结论说这个文件是安全的吗?(你能想到其他任何“危险”的方式来运行内置方法吗?)