为了避免在文件加载期间执行可能会任意调用操作系统命令的 Python 命令,我们实现了 Python 沙盒。可以在“首选项”>“脚本”中配置它。默认情况下,该沙盒处于启用状态,可阻止以下操作:
如果项目文件中包含的 Python 脚本尝试进行上述操作之一,将显示警告对话框。然后,用户可以手动允许或阻止该操作。
如果选择“将此操作应用于所有将来实例”,则选定操作将应用于同一命令的所有后续实例。
如果选择“对此项目允许”操作,将允许进行该操作,直到调用新场景或加载其他项目文件为止。
如果选择“不执行”,将阻止该操作并引发 Python 异常。
使用脚本首选项可启用、禁用或配置 Python 沙盒。
启用 Python 沙盒 - 用于启用或禁用 Python 沙盒。当沙盒处于禁用状态时,对脚本执行没有限制。启用沙盒时,将阻止在 Python 脚本中创建新网络连接、通过 Python IO 模块访问文件系统以及启动新进程。
高级搜索 - 用于配置异常。启用此选项后,VRED 将在“允许的函数”中检查是否有任何添加的函数,以及在“允许的模块”中检查是否有任何添加的模块异常。
如果在允许列表中添加了 socket
,则不再阻止套接字模块提供的所有函数。
如果在允许的函数列表中添加了 socket.getaddrinfo
,则仅不再阻止套接字模块提供的函数 getaddrinfo
。
允许的模块异常也可用于从 Python 沙盒中排除自定义 Python 模块。
除了首选项外,还可以使用命令行选项和环境变量控制沙盒。
-insecure_python
完全关闭沙盒。-force_secure_python
强制打开沙盒。VRED_SECURE_PYTHON
以强制打开沙盒。