跳转到主要内容

安全与信任策略

自定义组件的风险不取决于“是否用了 RunCommand”或“是否会在线更新”,而取决于:
  1. 可执行内容从哪里来
  2. 可执行内容是否会在运行时变化
因此,本地快捷启动组件可以静默执行命令;新闻组件可以静默更新数据;只有远程内容生成或改变可执行内容时才需要确认。

风险矩阵

可执行内容指纹

远程更新时只比较“可执行内容”:
  • RunCommand 的 Command、WorkingDirectory
  • PluginApi 的 PluginId、Method、Arguments
  • 当存在上述动作时,相关函数脚本和触发器
单纯的 Data 刷新、文本变化、布局变化不会触发确认。新闻、公告、状态类组件可以继续实时更新。

动态命令

这类命令的最终值来自在线数据,执行前会显示最终命令并确认。确认后只信任当前这条命令的哈希;远程数据换成另一条命令时会再次确认。 命令模板只识别以下绑定命名空间: Data、Resources、Inputs、Results、Children、Size、State。 普通 shell 花括号(例如 PowerShell 脚本块)不会被当作绑定替换。

仍然存在的边界

  • 本地导入的 .qwidget 被视为用户主动选择的本地内容;本地组件内的字面量命令不逐次确认。
  • 用户确认过的远程静态命令在命令未变化时不再逐次确认;这是有意设计。
  • 只使用你信任的组件来源。启动器开发者不对自定义组件造成的风险负责。