氛围编程安睡无忧安全清单
2025年7月27日
- 对所有接口进行限速。 无论是 Supabase Edge Functions、Vercel middleware 还是一个 10 行的 Express 节流阀,都应进行限速。这样,当你悠哉地喝着浓缩咖啡时,就不会有哪个失控的机器人每秒对你的服务器发起上百次请求了。
- 开启行级安全(RLS)。 在 Supabase 中,依次点击“Table → RLS → Enable”,然后设置策略
user_id = auth.uid()。如果跳过这一步,销售部的 Karen 可能就会看到 Bob 的心理治疗记录。别问我怎么知道的。 - 给认证流程添加验证码。 在注册、登录和忘记密码环节使用 hCaptcha 或 reCAPTCHA。这能有效阻止那些“快来买我的加密货币课程”机器人大军,避免它们耗尽你的免费套餐额度。
- 打开 Web 应用防火墙(WAF)。 在 Vercel 后台,依次点击“Settings → Security → Web Application Firewall”,然后选择“Attack Challenge ON”。只需一键,即可获得即时防护。零代码,没借口。
- 像对待机密一样处理你的秘密。 秘密信息应该放在服务器的
.env文件中,绝不能包含在客户端代码包里。不然,如果你不留意,Cursor 可能会“好心”地把你的 Stripe 密钥直接粘贴到 React 代码中。 - 在后端验证所有输入。 无论是电子邮件、密码、上传文件还是 API 请求负载,即使前端已经进行了检查,后端也必须再次验证。前端的检查只是一种善意的提醒,而后端验证才是强制性的规定。
- 审计并精简依赖。 运行
npm audit fix,丢弃那些比你上次理发还旧的软件包,并修复关键漏洞。减少代码的攻击面,就能少收几封凌晨三点的安全漏洞邮件。 - 在用户报 bug 之前记录日志。 可以使用 Supabase Logs、Vercel Analytics,或者简单的服务器日志(包含时间戳和 IP 地址)。只有能看到问题,你才能解决问题。
- 让大语言模型扮演“黑脸”。 提示 GPT-4o:“请扮演一名资深安全工程师。扫描此代码库中的认证、注入和限速问题。”这虽然不是一次专业的渗透测试,但它能在问题被网友吐槽之前,帮你发现那些让人拍脑袋的低级错误。
总结一下: 限速 → 行级安全 → 验证码 → WAF → 机密管理 → 输入验证 → 依赖审计 → 监控 → AI 审查。如果跳过其中任何一步,未来的你可能就要多买几杯咖啡来提神了。