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