python - 危险的 Python 关键字?

标签 python

我即将从一个不受信任的来源获得一堆 python 脚本。

我想确保代码的任何部分都不会损害我的系统,意思是:

(1)代码不允许导入ANY MODULE

(2)代码不允许读写任何数据、连接网络等

(每个脚本的目的是遍历一个列表,从给它的输入中计算一些数据并返回计算值)

在我执行这样的代码之前,我希望有一个脚本“检查”它,并确保那里没有任何危险的东西会伤害我的系统。

我想到了使用以下方法:检查没有使用'import'这个词(所以我们保证没有导入任何模块)

然而,用户(如果需要)仍然可以编写代码来读/写文件等(例如,使用 open)。

那么问题来了:

(1) 在哪里可以获得 python 方法的“全局”列表(如 open)?

(2) 是否有一些代码可以添加到发送给我的每个脚本(在顶部),这会使某些“全局”方法对该脚本无效(例如,任何使用关键字 open 会导致异常)?

我知道python沙盒有一些解决方案。但请尝试回答这个问题,因为我觉得这是更符合我需求的方法。

编辑: 假设我确保文件中没有 import,并且没有可能的有害方法(例如 openeval 等)在其中。我可以断定该文件是安全的吗? (你能想到其他可以运行内置方法的“危险”方式吗?)

最佳答案

这一点还没有提出,应该是:

You are not going to be able to secure arbitrary Python code.

除非您想解决安全问题,否则虚拟机是最佳选择。

关于python - 危险的 Python 关键字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5517582/

相关文章:

python - 在Python套接字编程中,在服务器中等待来自客户端的消息

python - 删除具有相同值但名称不同的列

python - 外键中的 Django 模型计数

python : How to make label bold in kivy

python - 使用 Python 中另外两个数组设置的数组元素/数量创建新数组

python - 从列表定义函数

python - ipywidgets:使用交互时避免闪烁

python - 使用 lambda 的魔术方法

python - 狮身人面像中的组方法文档字符串

python 编码问题\ufeff in pandas 列名