跳到主要内容
版本:7.2.0

开放能力安全策略

1. 概述

为进一步保障数据安全、防范恶意攻击,BI平台 从 6.6.0 2025-07发布的版本起,针对开放能力的代码执行新增了两种安全模式,适用于自定义图表插件

免责说明:

  • 代码编写规范建议参考 Airbnb JavaScript Style Guide;禁止使用任何不安全不允许的写法

  • 插件开发应遵循 最小范围 原则:

    • 自定义图表 Iframe,仅用于纯粹的图表绘制,仅允许使用和操作 iframe 内且非存储信息的资源。
    • 自定义图表 Lite, 仅用于纯粹的图表绘制,仅允许使用明确提供的信息
    • 插件管理,仅用于使用 OpenSDK 提供的开放能力进行信息的读取和操作
  • 任何插件禁止使用存储相关的 API、也禁止以任何形式读取或变更存储信息

2. 安全模式说明

2.1. 安全模式等级

安全模式分为两级:

  • 执行安全:基础安全限制,保障代码执行过程的安全性
  • 执行安全+写入安全:在执行安全的基础上,额外限制写入操作。

注意:目前开启此模式后,将关闭自定义图表和插件的创建与修改功能。

2.2. 开启方式

安全模式需要通过运维手段开启,如需开启请联系观远数据运维同学。

2.3. 开关控制规则

  • 自定义图表的 Iframe 模式和 Lite 模式共用一个安全模式开关
  • 插件独立使用一个安全模式开关,与自定义图表的开关互不影响

2.4. 注意事项

开启安全模式会对自定义图表和插件的代码执行产生限制,可能导致包含危险写法的已定制开发图表或插件不可用,需进行额外适配。但无需过度担忧,绝大部分定制需求仍可在安全写法下完成。

关闭安全模式虽能为定制开发提供便利,但也会大幅增加被攻击的风险,请客户谨慎选择。

3. 具体限制

3.1. 自定义图表-Iframe

  • 开启 严格模式
  • 禁止通过 globalself 访问 window 对象
  • 禁止使用 XMLHttpRequestWebSocket 等通信类 API
  • 禁止通过 window.parent 访问宿主页面的任何信息(包括使用 postMessage 方法)
  • 禁止访问任何存储信息:cookielocalStoragesessionStorageindexedDB
  • 禁止使用危险方法:evalFunctionconstructor

3.2. 自定义图表-Lite

  • 开启 严格模式
  • 禁止使用 documentglobalThisselfwindow 仅允许访问 GDecharts 两个属性

    特别注意:window 仅允许访问 GDecharts 两个属性 在非安全模式下也生效

  • 禁止使用 fetchXMLHttpRequestWebSocket 等通信类 API
  • 禁止访问任何存储信息:cookielocalStoragesessionStorageindexedDB
  • 禁止使用危险方法:evalFunctionconstructor

3.3. 插件

  • 开启 严格模式
  • 禁止通过 globalThisself 访问 window
  • 禁止使用 fetchXMLHttpRequestWebSocket 等通信类 API,发送请求需使用 GD.fetch(仅允许 /api/ 类请求)
  • 禁止访问任何存储信息:cookielocalStoragesessionStorageindexedDB
  • 禁止使用危险方法:evalFunctionconstructor