high
Supabase RLS 最佳实践
问题所在
启用 RLS 只完成了一半工作。即使 RLS「开着」,过于宽松或写错的策略仍会让数据暴露。下面这些实践能让 Supabase 行级安全真正保护你的数据。
分步操作
- 1
默认拒绝,显式允许
为每张表启用 RLS,使访问默认被拒绝,然后添加范围狭窄的策略。绝不要在存放私密数据的表上使用 'true' / 全部允许式策略。
- 2
把策略限定到用户
使用 auth.uid() 把数据行限定到其所有者,例如 USING (auth.uid() = user_id)。为每种操作(select/insert/update/delete)分别编写策略,并在写操作上使用 WITH CHECK。
- 3
防范权限提升
把 service-role 密钥仅保留在服务端——它会绕过 RLS。不要暴露会绕过你策略泄露数据的视图或 SECURITY DEFINER 函数。
- 4
以匿名身份和以用户身份测试
确认匿名请求什么都返回不了,且一个用户无法读取或写入另一个用户的数据行。重新运行免费 RLS 检测来确认。
想要的不只是修复,还要有人核实?
修复只是第一步。ClearedToShip 的复核会确认修复确实有效,并为你出具一份签署的、带保险的上线放行许可。加入抢先体验: