gpt4 book ai didi

python - 安全的 Python 表达式评估

转载 作者:太空宇宙 更新时间:2023-11-04 06:03:22 25 4
gpt4 key购买 nike

我正在编写一个完全与 Blender 无关的 Python 脚本,我注意到 Blender 已经针对我遇到的问题实现了解决方案。

我正在尝试向程序输入一个 python 表达式,当前使用的是 eval() 函数。然而,这不是好的安全做法。引用这个question了解更多信息。请注意,我需要运算符不被阻止,因此 ast.literal_eval() 无法使用。

Blender 派上用场了。This answer演示了 Blender 中的一项功能,称为驱动程序面板中的脚本化 Python 表达式框。它完全实现了我希望我的 python 脚本执行的操作。我下载了 blender 源代码对其进行逆向工程,但它全是 C++ 而不是 python(即使表达式是使用 python 语法求值的)。

这是如何实现的?

最佳答案

Blender 正在有效地使用 eval() 并且没有尝试使表达式安全
(查找沙盒 CPython,它不是微不足道的)。

这就是为什么 Blend 文件有一个选项 Trusted Source,有关更多详细信息,请参阅:
http://wiki.blender.org/index.php/Doc:2.6/Manual/Extensions/Python/Security

C代码见BPY_driver_exec
https://developer.blender.org/diffusion/B/browse/master/source/blender/python/intern/bpy_driver.c $172

关于python - 安全的 Python 表达式评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23494462/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com