关于 rls-check
rls-check 分析 Supabase 行级安全设置,并用阿拉伯语向非技术创业者逐表说明数据暴露情况。它只读取策略元数据,不读取表记录,也不需要数据库密钥或连接。
主要功能
- 01按访问风险分类表
- 02用阿拉伯语解释结果
- 03仅读取策略、授权和列信息
- 04提供 SQL 查询与结果分析
- 05支持命令行和 MCP
适用场景
- 01上线前检查 Supabase 访问规则
- 02向创业者说明数据暴露问题
- 03在 CI 步骤中运行 RLS 检查
MCP 相关
MCP 服务提供两个工具:一个返回只读查询,另一个解释查询结果。助手可通过官方 Supabase MCP 执行查询;rls-check 本身不保存数据库连接信息。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
2收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
Supabase RLS 检查:谁能读取客户数据?
一条只读查询,由你在自己的 Supabase SQL Editor 中运行;分析器会逐表解释结果:
- 使用公开(anon)密钥的任何人可以读取或更改哪些表;
- 哪些表允许任何已登录用户读取其他用户的行;
- 哪些表已锁定,哪些表是安全的。
分析结果面向非技术背景的创始人,以阿拉伯语撰写,并附有英文标签(exposed、check it、
locked、safe);每项结果都链接到一篇介绍修复方法的阿拉伯语教程。
- 它不会读取任何数据。 查询只读取表描述:RLS 状态、策略、授权和列名,绝不读取任何行。
- 它不需要密钥或密码,也不会连接到你的数据库。你可以自行运行查询,或让 Agent 通过官方 Supabase MCP 运行。
- 它与浏览器工具执行的是同一项检查:muhandis.online/tools/rls-check:
lib/rls-check.js是网站上的分析器,逐字节复制而来。
用法
1. 在浏览器中使用(最简单)
打开检查页面,复制查询,在 Supabase 中运行,然后粘贴结果。所有操作都在浏览器中完成;不会向任何地方发送数据。
2. 从命令行运行
npx muhandis-rls-check query > query.sql # the query: run it in your SQL Editor
npx muhandis-rls-check result.json # paste the result cell into a file; this explains it
npx muhandis-rls-check result.json --json # the same explanation as JSON
发现暴露的表时,程序会以 1 退出,因此可将其作为 CI 步骤。
3. 用于 AI 助手(MCP)
将它添加到 Claude、Cursor 或任何 MCP 客户端中。助手会运行查询(例如通过官方 Supabase MCP),然后由此服务解释结果。此服务本身不保存任何连接信息。
{
"mcpServers": {
"muhandis-rls-check": { "command": "npx", "args": ["-y", "muhandis-rls-check", "mcp"] }
}
}
工具:rls_check_query 返回查询,rls_check_explain 解释结果。
4. 作为 Claude 技能
同一项检查也可作为 Claude 技能:Claude 会提供查询,然后通过 skills/rls-check/scripts/rls_check.py 处理你粘贴的结果。这是分析器的 Python 版本,测试会确保其输出与 lib/rls-check.js 相同。它不需要密钥,也不会发起网络请求。
- Claude 应用: 从最新版本下载
rls-check.zip, 然后选择 Customize > Skills,上传并启用。必须启用代码执行功能。 - Claude Code:
/plugin marketplace add Muhandis-online/rls-check
/plugin install rls-check@muhandis
检查内容
| 标签 | 阿拉伯语 | 含义 |
|---|---|---|
exposed | مكشوف | RLS 已关闭且访客角色拥有授权;或表中包含个人信息列,但策略条件为 true;或访客可以读取未启用 security_invoker 的视图;或任何人都可以使用的更新或删除策略 |
check it | تأكد منه | 任何人都可以读取、但不包含个人信息列的数据,例如产品列表;或无需登录即可插入数据的情形,例如联系表单 |
locked | مقفول | 已启用 RLS 但没有策略,或没有授权:应用无法访问该表 |
safe | سليم | 策略通过 auth.uid() 与行所有者关联 |
系统会根据列名识别个人信息列(email、phone、user_id、iban、national、iqama 等)。
局限性
此工具检查的是可见规则,不能替代实际测试。检查后,请使用两个账户登录,并确认每个账户只能看到自己的行。Supabase 自带的 Security Advisor 会标记相关问题(RLS 已禁用、security-definer 视图、宽松策略);此工具会用阿拉伯语向产品负责人解释问题,并提供每项结果的修复方法链接。
发现暴露的表,想找工程师一起修复?muhandis.online/services/fix
由 Muhandis 制作,这是一家服务于沙特阿拉伯和海湾合作委员会(GCC)企业的软件公司。MIT 许可证。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。