Skip to content
难度LEVEL
阅读READ约 2 分钟~2 min
更新UPDATED2026-09

第 15 章 安全 · 不懂的人不知道自己在裸奔

easycode · Agent Skill
保命的五条底线 01 秘密进环境变量,永不进代码 泄露了就作废换新,别指望删代码有用 02 永远不要相信前端和用户输入 验证、权限、金额,后端必须再做一遍 03 数据库必须开行级权限 RLS 没开 RLS 的表,约等于向全网公开 04 永远不要自己发明登录系统 用现成的 Auth,绝不存明文密码 05 不可逆操作,上线前人肉确认 转账 · 铸币 · 群发 · 删生产数据 「能跑」和「安全」看起来一模一样——不安全的网站照样能打开、能注册、能用,直到出事那天 stickmancharles.com · CC BY-NC-ND 4.0
图 15 · 保命的五条底线

先说清楚为什么单开一章。"能跑"和"安全"看起来一模一样。不安全的网站照样能打开、能注册、能用,直到出事那天。AI 时代人人能做产品,最容易出的事故就在这里。好消息是,保命的底线只有五条,全是常识级别。

  1. 秘密进环境变量,永不进代码(第 9 章)。泄露了就立刻作废换新,别幻想删掉那行代码有用。
  2. 永远不要相信前端和用户输入(第 2 章)。一切验证、权限、金额计算,必须在后端再做一遍。
  3. 数据库必须开行级权限。Supabase 里这叫 RLS(Row Level Security),给每张表立规矩,谁能看哪些行,谁能改哪些行。一张没开 RLS 的表,约等于向全网公开。让 AI 建表时,永远记得追问一句:"RLS 配了吗?规则是什么?"
  4. 永远不要自己发明登录系统。密码的存储、找回、防爆破,是无数人踩坑几十年的成果。用平台现成的 Auth(比如 Supabase Auth),别自己存密码,更绝对不能存明文。
  5. 不可逆操作,上线前人肉确认。转账、铸币、群发邮件、删生产数据,这类动作在真实执行前,必须有一个人类看过并说"确认"。先发给自己,再发给用户。

每一条背后都有真实世界里成堆的事故。写死在代码里的 key,被扫库机器人几分钟内盗刷。只在前端校验价格,被人把 100 元改成 1 元下单。没开 RLS 的用户表,被整表拖走。这些都上过新闻,用不着我编。

关键领悟

安全是和出门锁门同级的生活习惯,五条底线全是常识。这一章值得每半年重读一遍。

试一试

现在就去 Supabase 后台,逐张表检查 RLS 是否开启。这可能是全书性价比最高的十分钟。

由 Charles Tao 与 Claude 协作写成——这本身就是这套书讲的工作方式。Written by Charles Tao with Claude — which is itself the working method this series teaches. · 许可License