跳转到内容

用“密钥”安全保存 API 密钥

要点“密钥”是应用存放 API 密钥和私密设置的保险箱。在“后端 → 密钥”中用 WEATHER_API_KEY 这样的名称添加,它们会加密保存,保存后不再显示,而且只有应用的服务器代码能读取。点击“应用到预览”即可立即使用;线上应用会在你下次发布时获得这些密钥。永远不要把密钥粘贴到聊天里。

当你的应用使用其他公司的服务(比如天气预报、菜谱数据库、支付服务商)时,对方会给你一个 API 密钥:一串很长的秘密口令,让你的应用可以使用你在该服务的账户。任何拿到这个密钥的人都能使用你的账户,还会让你的账单越滚越大。所以密钥需要一个安全的地方存放。

这个地方就是密钥。每个应用都有自己的密钥库,加密保存。应用的代码在需要时读取密钥,而任何人,无论是使用你应用的人,还是你分享项目的人,都看不到它。

  1. 打开项目,点击 后端密钥。

  2. 在名称中为密钥起个名字,比如 SPOONACULAR_API_KEY。请使用大写字母、数字和下划线;小写字母会被 MonstarX 自动转为大写。

  3. 在值中粘贴密钥。输入时会显示为圆点。

  4. 点击添加。

  5. 点击应用到预览,保存后它会出现在右上角。预览会用新密钥重新启动,你可以马上试用。

  6. 在聊天中告诉 MonstarX 哪个功能要用这个密钥:“用 SPOONACULAR_API_KEY 查询每个菜谱的营养成分”。

已发布的应用会在你下次发布时获得新增和修改的密钥。详见发布你的应用。

为什么永远不要把密钥粘贴到聊天里?

Section titled “为什么永远不要把密钥粘贴到聊天里?”

聊天记录会随项目一起保存。你分享项目的每个人都能看到它,构建应用的 AI 模型会读取它,项目历史中也会保留它。粘贴到聊天里的密钥就不再是秘密了。把密钥直接写进代码同样不安全:它会出现在项目文件里、导出的代码里,如果你连接了 GitHub,还会出现在 GitHub 上。

如果你不小心把密钥粘贴到了别处,请在该服务的控制台中生成一个新密钥,删除旧密钥,然后把新密钥保存到“密钥”中。

  • 修改:用同样的名称重新输入新的值,按钮会从添加变成更新。点击它,然后点击应用到预览。
  • 移除:点击旁边的垃圾桶并确认。在重新添加之前,应用中用到它的功能都会停止工作。

已保存的值任何人都无法再次读取,包括你自己。每个值都显示为圆点,并附有添加时间。如果需要这个密钥,请到签发它的服务那里获取。

有些名称属于 MonstarX 或应用运行所在的系统,因此“密钥”会拒绝它们:

  • 以 MONSTARX_、BETTER_AUTH_、CLOUDFLARE_、CF_、GCP_、RAILWAY_、NODE_ 或 NPM_ 开头的名称。
  • PATH、HOME、PORT、NODE_ENV、TMPDIR、USER、SHELL、PWD、CI、HOSTNAME、FORCE_COLOR 和 NO_COLOR。
  • 以 VITE_ 开头的名称,因为它们会被编译进页面,所有访客都能读取。(已经在使用 VITE_ 名称的导入应用可以继续保留。)

名称必须以字母开头,最长 64 个字符。

有些值本来就是给人看的,比如网站名称,或者服务商明确说可以放在浏览器中的可公开密钥。这类值请用 PUBLIC_ 开头命名。它们可以进入页面,你输入这类名称时,MonstarX 会给出提醒。

谁能看到我的密钥?

已保存的值任何人都无法读取,包括你自己。你分享项目的人根本看不到后端标签页。只有应用的服务器代码会读取这些值。

我已经添加了密钥,但应用还是提示缺少密钥。

点击应用到预览,让预览带着新密钥重新启动。对于线上应用,请重新发布。另外,请检查名称是否与应用读取的名称完全一致。

为什么我看不到自己保存的值?

值保存后就不再显示,这样就不会从你的屏幕上泄露。要修改某个值,用同样的名称保存新值即可。

应用可以在浏览器中使用密钥吗?

不可以。密钥只由应用的服务器代码读取,永远不会到达访客的浏览器。页面本身需要的值,比如可公开密钥,请用 PUBLIC_ 开头命名。

“密钥”和“连接器”有什么区别?

连接器是为知名服务准备的现成表单,会以固定名称把密钥保存到“密钥”中,并告诉 MonstarX 如何使用这些服务。其他所有情况都用“密钥”。