主题
第 15 章 安全 · 不懂的人不知道自己在裸奔
先说清楚为什么单开一章。"能跑"和"安全"看起来一模一样。不安全的网站照样能打开、能注册、能用,直到出事那天。AI 时代人人能做产品,最容易出的事故就在这里。好消息是,保命的底线只有五条,全是常识级别。
- 秘密进环境变量,永不进代码(第 9 章)。泄露了就立刻作废换新,别幻想删掉那行代码有用。
- 永远不要相信前端和用户输入(第 2 章)。一切验证、权限、金额计算,必须在后端再做一遍。
- 数据库必须开行级权限。Supabase 里这叫 RLS(Row Level Security),给每张表立规矩,谁能看哪些行,谁能改哪些行。一张没开 RLS 的表,约等于向全网公开。让 AI 建表时,永远记得追问一句:"RLS 配了吗?规则是什么?"
- 永远不要自己发明登录系统。密码的存储、找回、防爆破,是无数人踩坑几十年的成果。用平台现成的 Auth(比如 Supabase Auth),别自己存密码,更绝对不能存明文。
- 不可逆操作,上线前人肉确认。转账、铸币、群发邮件、删生产数据,这类动作在真实执行前,必须有一个人类看过并说"确认"。先发给自己,再发给用户。
每一条背后都有真实世界里成堆的事故。写死在代码里的 key,被扫库机器人几分钟内盗刷。只在前端校验价格,被人把 100 元改成 1 元下单。没开 RLS 的用户表,被整表拖走。这些都上过新闻,用不着我编。
关键领悟
安全是和出门锁门同级的生活习惯,五条底线全是常识。这一章值得每半年重读一遍。
试一试
现在就去 Supabase 后台,逐张表检查 RLS 是否开启。这可能是全书性价比最高的十分钟。