【发布时间】:2011-12-08 09:14:08
【问题描述】:
我在应用程序中嵌入了 python 作为脚本平台,因此用户可以编写 python 脚本。我试图阻止导入,因此它们无论如何都不会造成损坏,并且必须坚持提供的 API。
我想出了以下 Python 代码:
__builtins__ .__import__= None
reload = None
这似乎可以防止导入并防止重新加载模块。需要防止重新加载,这样他们就无法重新加载内置函数,让它们返回工作导入。
但是我不是 Python 专家。用户仍然可以做些什么来导入模块?
谢谢
【问题讨论】:
-
请看看这个question。
-
谢谢。从那篇文章中可以看出,除了导入之外,还有很多其他危险的事情,所以仅仅阻止导入可能是不够的。
-
如果用户在他的机器上运行应用程序,让他充分利用 Python 有什么“危险”?还是您的应用会在服务器中接收来自不受信任的远程用户的脚本?
-
我们不希望他们在文档化和预期的 API 之外导入更多我们的代码,因为他们可能会破坏应用程序或丢失数据。与人们共享脚本,结果证明它是恶意的,有点像 Word 宏中的安全漏洞。他们还可以在 Python 中使用他们认为不危险的东西,但事实证明它是危险的,并且会破坏他们的系统。如果他们选择通过独立的 Python 解释器运行那很好,这取决于他们,但这不是应用程序的问题。