为Zope环境中Python脚本的受限执行提供支持。
项目描述
Products.PythonScripts
Python脚本产品提供对Python脚本的受限执行的支持,将它们暴露为Zope环境中的可调用对象。
提供额外模块的访问
Python脚本对象默认只能使用有限的“安全”模块。在与Zope合作的过程中,您可能希望将其他模块提供给脚本对象。
PythonScripts产品中的Utility.py模块提供了一种简单的方法,可以在整个站点上使模块可供脚本对象使用。在将模块提供给Python脚本之前,您应该仔细考虑该模块被滥用或误用的可能性,因为所有拥有创建和编辑Python脚本权限的用户都将能够使用模块中定义的任何函数和类。在某些情况下,您可能希望创建一个自定义模块,仅从另一个模块导入名称子集,并使该自定义模块可供使用以降低滥用的风险。
在您的站点上使模块可供Python脚本使用的最简单方法是,在您的Products目录中创建一个包含__init__.py文件的新目录。在Zope启动时,将导入此“产品”,并且您在__init__.py中做出的任何模块断言都将生效。下面是如何操作的:
在您的Products目录中(根据您的部署模型,可以是Zope安装的lib/python中的目录或Zope安装的根目录),创建一个名为“GlobalModules”的新目录。
在新的目录中创建一个名为__init__.py的文件。
编辑__init__.py文件,并添加对位于Products.PythonScripts.Utility模块中的‘allow_module’函数的调用,传递要启用供脚本使用的模块名称。例如:
# Global module assertions for Python scripts from Products.PythonScripts.Utility import allow_module allow_module('base64') allow_module('re') allow_module('DateTime.DateTime')
此示例将添加“base64”,“re”和“DateTime”包中的“DateTime”模块,供Python脚本使用。请注意,对于包(点分隔的名称),包路径中的每个模块都将对脚本对象可用。
重新启动您的Zope服务器。重启后,您在自定义产品中启用的模块将可供Python脚本使用。
如果您尝试导入的包/模块不在您的Products目录中,将包/模块中的安全断言放在其中不起作用。
这是因为该包/模块必须被导入以使其中包含的安全断言生效,但这样做将需要导入一个没有任何安全声明的模块,这与限制Python环境的目的是相违背的。
产品在Zope启动时以不同的方式工作。通过将包/模块放在您的Products目录中,您正在断言,其中包括它对于Zope检查该包/模块的安全性声明的安全性。因此,请小心将非Zope产品包或模块放在Products目录中。
更改日志
5.0 (2023-02-01)
删除对Python 2.7,3.5,3.6的支持。
4.15 (2022-12-16)
修复针对Zope 4的测试中的buildout配置隐蔽错误。
添加对Python 3.11的支持。
4.14 (2022-07-13)
添加对Python 3.10的支持。
从.tests.testBindings中删除未使用的类SecurityManager和RivilegedUser。
4.13 (2021-07-02)
确保“Manager”用户始终可以修改代理角色(#50)
添加对Python 3.9的支持。
更新对isort版本5的配置。
4.12 (2020-06-03)
4.11 (2020-02-11)
修复与字符串编码相关的PUT问题。
4.10 (2020-02-11)
重写manage_DAVget以获取正确的可编辑源(#40)
4.9 (2019-10-09)
通过关闭默认内容文件防止资源警告/错误(#39)
4.8 (2019-09-04)
4.7 (2019-05-21)
确保模板的 _body 属性在 Python 3 中是原生字符串(#30)
4.6 (2019-04-15)
修复一个严重错误,该错误阻止页面模板编译(#27)
4.5 (2019-04-07)
4.4 (2019-03-08)
使用 setup.py 中的 python_requires 指定支持的 Python 版本(Zope#481)
添加对 Python 3.8 的支持
4.3 (2019-02-09)
对于空文件上传显示消息而不是异常(#21)
4.2 (2018-10-11)
添加对 Python 3.7 的支持。
停止支持 Python 3.4。
由于编译代码现在存储在 __code__ 而不是 func_code 上,强制重新编译脚本。
添加兼容 Python 3 的默认脚本。 (#10)
修复自 3.0 版本以来损坏的 Products.PythonScripts.standard 的安全声明(Zope#209)
修复当在 PythonScript 中输入包含语法错误的代码时发生的 HTTP-500 错误。现在它像其他错误一样显示为错误消息。(#11)
将测试更新到 RestrictedPython >= 4.0b4,因此至少需要此版本。(#17)
更新 Bootstrap ZMI 的 ZMI HTML 代码。(#16)
删除对 Zope 4.0a2 以来不再存在的旧版本的兼容性支持。
4.1 (2017-06-19)
添加对 Python 3.4 到 3.6 的支持。
4.0.1 (2017-02-06)
从编辑模板中删除 bobobase_modification_time。
4.0 (2016-08-06)
添加对 Zope 4.0a2 中 WebDAV 变更的兼容性。
3.0 (2016-07-18)
删除 HelpSys 支持。
2.13.2 (2012-09-09)
修复我们 standard 模块的模块安全声明。
2.13.1 (2012-09-09)
LP #1047318:调整测试。
2.13.0 (2010-07-10)
作为独立包发布。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装软件包的更多信息。