Raycast 中文文档
  • 介绍
  • 链接
    • 官网
    • 官网 API 文档
    • 社区
    • GitHub
    • Store
    • Icon 生成器
    • 扩展图标模板
  • 基础
    • 起步
    • 创建您的第一个扩展
    • 贡献一个扩展
    • 过审一个扩展
    • 发布一个扩展
    • 调试一个扩展
    • 安装一个扩展
  • 团队
    • 开始
    • 发布私人扩展
    • 协作开发私有扩展
  • 例子
    • Doppler 共享 Secrets
    • Hacker News
    • Todo 列表
    • Spotify Controls
  • 资料
    • 最佳实践
    • 工具
      • CLI
      • ESLint
      • VS Code(社区工具)
    • 文件结构
    • 生命周期
      • 参数
      • 后台刷新
      • Deeplinks
    • Manifest
    • 安全性
    • 术语
    • 版本控制
  • API 参考
    • AI
    • Cache
    • Command
    • Clipboard
    • Environment
    • Feedback
      • Alert
      • HUD
      • Toast
    • Keyboard
    • Menu Bar Commands
    • OAuth
    • Preferences
    • Storage
    • System Utilities
    • 用户界面
      • Action Panel
      • Actions
      • Detail
      • Form
      • List
      • Grid
      • Colors
      • Icons & Images
      • Navigation
    • 窗口 & 搜索栏
  • 公共包
    • 起步
    • 功能
      • 执行 AppleScript
    • 图标
      • getAvatarIcon
      • getFavicon
      • getProgressIcon
    • React hooks
      • useCachedState
      • usePromise
      • useCachedPromise
      • useFetch
      • useForm
      • useExec
      • useSQL
      • useAI
  • 迁移
  • FAQ
由 GitBook 提供支持
在本页
  • Raycast
  • 发布流程
  • 运行时模式
  • 权限
  • 数据存储
  • 自动更新
  1. 资料

安全性

请注意,这不是关于如何创建安全 Raycast 扩展的指南,而是关于如何构建、分发和运行扩展的安全相关方面的概述。

Raycast

Raycast 本身作为“开发者 ID 应用程序”在 App Store 之外运行,在应用程序分发之前使用 Raycast 证书进行签名并由 Apple 的公证服务进行验证。 Raycast 提供了与操作系统级功能交互的各种命令,其中一些命令会在需要时提示用户授予权限。该应用程序会自动保持最新状态,以最大限度地降低运行严重过时版本的风险并快速发布修补程序。 Raycast 是一个本地优先的应用程序,它将用户数据存储在本地加密数据库中,利用存储安全数据的系统 Keychain,并且通常直接连接到第三方 API,而不是通过 Raycast 服务器代理数据。

发布流程

所有扩展都是开源的,因此可以随时检查当前的源代码。在扩展程序合并到公共存储库之前,Raycast 和社区的成员会协作审查扩展程序,并遵循我们的商店指南。代码审查后,持续集成系统会执行一组验证,以确保清单符合定义的架构、所需资产具有正确的格式、作者有效,并且不存在构建和类型错误。 (计划使用更多用于自动化静态安全分析的 CI 管道工具。)然后将构建的扩展存档并上传到 Raycast Store,并最终为注册用户帐户发布。安装或更新扩展时,将从商店下载该扩展,取消存档到磁盘,并在本地 Raycast 数据库中更新记录。最终用户通过内置商店或网上商店安装扩展。

运行时模式

为了运行扩展,Raycast 启动一个 Node.js 子进程,在其中根据需要加载和卸载扩展; Raycast 的进程间通信通过标准文件句柄和小型 RPC 协议进行,该协议仅公开一组定义的 API,也就是说,扩展程序不能只执行任何 Raycast 操作。 Node运行时由Raycast管理并自动下载到用户的机器上。我们使用官方版本并验证 Node 二进制文件以确保它没有被篡改。

扩展在自己的 v8 isolate(工作线程)中运行,并获得自己的事件循环、JavaScript 引擎和 Node 实例以及有限的堆内存。这样,当未来的 Raycast 版本可能支持同时运行的多个扩展的后台执行时,我们可以确保扩展之间的隔离。

权限

就文件 I/O、网络或 Node 运行时的其他功能的策略而言,扩展不会进一步沙箱化;这在未来可能会改变,因为我们希望仔细平衡用户/开发人员体验和安全需求。默认情况下,与其他 macOS 应用程序类似,访问特殊目录(例如用户文档目录)或执行屏幕录制首先需要用户通过 macOS 安全和首选项弹窗向 Raycast(父进程)授予权限,否则不允许进行编程访问。

数据存储

虽然扩展可以访问文件系统并使用自己的存储和访问数据的方法,但 Raycast 提供了用于安全存储数据的 API:密码首选项可用于向用户询问访问令牌等值,本地存储 API 提供了读取方法并写入数据有效负载。在这两种情况下,数据都存储在本地加密数据库中,并且只能由相应的扩展程序访问。

自动更新

Raycast 本身和扩展都会自动更新,我们认为这是一项安全功能,因为过时且易受攻击的软件已经发生了无数的漏洞。我们的目标是开发人员和最终用户都不需要担心版本,并且我们最大限度地缩短从更新到分发给最终用户的时间。

上一页Manifest下一页术语

最后更新于1年前