跳到正文
阿里雲開發者社區 AI·· 3 小時前AI 評分55

Electron AI 助手把 API Key 放在客戶端,為何等同公開?

Electron 里的 AI 助手,API Key 放客户端为什么等于公开?

AI 導讀

Electron AI 助手將上游模型 API Key 或平台 appkey 寫入客戶端,會令長期密鑰近似公開;文章建議把密鑰留在服務端,向已登入用戶換發短期令牌。

正文

2026-10-23 9

版权

版权声明:

本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议》和 《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

简介: Electron 安装包可解包、asar 可提取,渲染进程在开发者工具下可读。把上游模型 API Key 或平台 appkey 写进客户端配置或打包结果,效果上接近公开额度入口。推荐只在服务端保存长寿命密钥,由已登录用户换发短期令牌。

因为桌面客户端不是保险箱。Electron 应用的安装包可以解包,asar 可提取,渲染进程在开发者工具下可读;即使用主进程藏一截字符串,拿到包的人仍能搜到密钥或截获换票流量。把上游模型 API Key或平台应用密钥(appkey)写进客户端配置、环境变量模板或前端打包结果,效果上接近把额度入口公开给「能安装或能拷贝这份应用的人」。

这不是吓阻话术,而是桌面分发的默认威胁模型:客户端在用户机器上,攻击者与用户往往同机。

行业在强调什么

企业给助手接工具时,凭据治理与「谁能调什么」常被一起讨论。NIUX 2026-10-22 周刊转述的多云 MCP 实践,把散落在各电脑与脚本里的凭据,收成可审计、可撤权、可更新的统一链路——重点不是「再藏深一点」,而是密钥不要落在每台终端。InfoQ 关于生产环境 MCP 纵深防御的文章(约 2026-10-10,腾讯新闻有转载)把出站限制与作用域令牌列为独立控制层:入站认证不够,下游凭据权限还要最小化。桌面助手若把长寿命 Key 打进安装包,等于跳过了「作用域」和「可吊销」这两步。

办公 Agent 在 PC 端高速增长(QuestMobile 三季度数据经多家转载,办公类 Agent PC 客户端用户规模同比约 +512%)。PC 上助手越常用,安装包里的密钥面越大。

行业答案:服务端铸短期令牌

推荐分工:

凭据 放哪里 用途
上游模型密钥 / 平台 appkey 仅你们的服务端 代表应用;为终端用户换票;可轮换、可配 IP 白名单
短期应用令牌 经你们后端发给已登录用户,有时限 客户端会话调用;泄露面小于长寿命 Key
你们自己的登录态 客户端按现有桌面登录方案 证明「是哪个终端用户」,不代替平台 appkey

客户端需要的是:已登录用户 → 你们的换发端点 → 短期令牌 → SDK/会话使用令牌。换发端点必须校验你们的登录态,并限制频率与来源。Key 轮换、按用户吊销、IP 白名单,都在服务端与控制台完成,而不是改一版客户端希望用户都升级。

Tansr 怎样承接这条链

资料站账号页区分两类密钥:

  • PAT:代表开发者本人,只给命令行 tansr init 用。
  • 应用密钥(appid / appkey):代表应用,在控制台「应用」页签发,只放在你们的服务端,用来为终端用户换取短期令牌;终端用户不需要 tansr 账号。

创建应用时选类型:桌面应用(Electron 等)、移动应用、服务端应用。一应用一平台,多端多 appid。

新签发的应用键缺省强制换发请求携带三头:x-tansr-ts、x-tansr-nonce、x-tansr-sign。未签名恒返回 401 signature_invalid。官方样板目录名是 examples/token-server(本批未打开样板源码,算法细节以样板为准,正文不自推签名公式)。

appkey 泄露时:在控制台轮换,更新服务端环境变量并重启;旧 appkey 即时失效。还可按终端用户定向吊销其存量令牌,或停用整个应用;应用可配置 IP 白名单,命中外为 app_ip_denied。

SDK 侧(@tansr/sdk 0.14.0 起)token 可传 () => string getter:bundle、心跳、模型直连、媒体工具、提示词刷新等平台请求发起时取现值,令牌轮换后无需重建会话;getter 须返回非空字符串。query() 同律。注意:getter 解决的是「短期令牌轮换」,不是把 appkey 塞进客户端的借口。

@tansr/sdk 0.13.0 起提供 AppTokenMinter.invalidate:按平台返回的失效原因逐出缓存令牌,便于与吊销联动。本批未实际调用该接口。

测试期还有月度不同终端用户数上限(账号页写 100,仅铸令牌路径计数),触顶码为 plan_end_users_exceeded。这与「Key 放客户端」无关,但影响试点规模规划。价格与是否付费以控制台为准;本文不写成交价。

采用条件与边界

  • 短期令牌仍需保护(内存、IPC、日志勿明文落盘)。
  • 终端用户身份由你们的登录系统负责;平台令牌不能代替业务授权。
  • Electron 主进程跑完整 SDK、渲染进程经 IPC 的接法,与「密钥放渲染进程」是两回事——主进程也不该内嵌 appkey。
  • 本文是选型与机制说明;未运行换发端点,未做抓包验证。

什么时候「客户端放 Key」仍有人做

本地个人工具、从不外发的调试构建、或密钥仅指向零额度沙箱时,有人图省事。一旦安装包发给客户或同事,威胁模型就变了。能接受公开额度,才谈得上「放客户端也能跑」;对要分发的 Electron AI 助手,通常不能接受。

说明见 账号、密钥、套餐与计费 与 SDK Changelog(0.13.0 / 0.14.0 相关段)。对照日期 2026-10-23。

來源:阿里雲開發者社區 AI · developer.aliyun.com