这是整门课里唯一一件做错了会真出事的事。别的地方搞砸了最多是页面难看、功能不好使,钥匙漏了是数据库被人拖走、账单被刷爆。这张卡值得单独存一份——以后每接一个新服务、每部署一次,都回来对一遍。
新项目叫 Publishable key(值以 sb_publishable_ 开头);老项目叫 anon。
这把是给网页用的,它出现在前端、被人看到,也不要紧。
为什么不怕?因为数据库门口有 RLS 规则把着,别人就算拿到这把,也只能干"规则允许的事"(比如注册、看自己的),动不了别人的数据。
新项目叫 Secret key(值以 sb_secret_ 开头);老项目叫 service_role。
这把能绕过所有规则、动所有人的数据。
绝对不能出现在网页里、不能提交到 GitHub、不能发给任何人、不能贴进任何聊天框。它漏出去,等于把整个数据库的大门钥匙贴到了大街上。
sb_publishable_ ≙ anon(能公开),sb_secret_ ≙ service_role(打死不能露)。老的两个名字官方计划 2026 年底停用。认作用,别认位置:能给网页用的那把可以公开,能绕过规则动所有数据的那把不能。拿不准就去 Settings → API Keys 看,或对照 官方 API Keys 说明页。.env,线上填到托管平台的环境变量设置里)。.env 一定要在 .gitignore 名单里,不进代码仓库。.gitignore 就是一份"这些文件别提交"的清单,放在项目根目录。sb_secret_ / service_role)只在后端用,绝不进前端、不进 GitHub、不发群里。我要部署了。帮我检查一遍: 1. 我的密钥有没有写死在代码里?有的话挪到环境变量。 2. .env 有没有在 .gitignore 里、确保不会被提交到 GitHub? 3. 万能钥匙(sb_secret_ 或 service_role 那把)有没有不小心出现在前端代码里? 逐条告诉我检查结果。
别只信 Agent 说"检查过了"。打开你项目的 GitHub 仓库,用仓库搜索框搜一下你的钥匙(尤其 sb_secret_ / service_role 那串)。
这一步是这张卡上唯一一条你能自己判定真假的检查:结果是二元的,搜得到或搜不到,不用信任何人的说法。养成部署完顺手搜一次的习惯。
拿不准某样东西能不能公开?别自己硬猜。把情况发到群里,或直接找 Abel、助教。钥匙安全这事,宁可多问一句。