Rls Check

io.github.Muhandis-online由 GitHub 账号 Muhandis-online 发布v0.1.2更新于 Oct 30, 2026

Read-only Supabase RLS check: explains in Arabic which tables anyone can read or change. No keys.

发布方自己的服务:check.tattoo: tattoo size and placement guide

已验证STDIO仅桌面数据库安全与监控

概览

AI 生成的概览

只读的 Supabase RLS 检查工具:给助手一条可执行的 SQL 查询,再用阿拉伯语逐表解释结果,无需密钥,也不连接数据库。

可以做什么
  • 生成一条只读 SQL 查询,列出 Supabase 项目 public schema 中所有表和视图的 RLS 状态、anon/authenticated 授权、列名与策略。
  • 对粘贴回来的查询结果逐表解释,按风险从高到低分为 exposed、check it、locked、safe。
  • 指出任何持有公开 anon 密钥的人可读或可改的表,以及任何登录用户可读取他人数据行的表。
  • 提供英文标签,并为非技术创始人附上阿拉伯语修复课程链接。
适用场景
适合在审查 Supabase 项目的行级安全(RLS)时使用,希望得到用阿拉伯语、面向非技术人员的通俗说明,了解哪些表会泄露客户数据。适合能在 SQL Editor 或通过 Supabase MCP 工具执行查询、但不想自己读策略的创始人或小团队。
运行要求
通过 npx(Node.js)以 stdio 在本地运行;不需要 API 密钥、密码或环境变量。需自行在 Supabase SQL Editor 或通过 Supabase MCP 的 execute_sql 工具运行返回的查询,并把结果传回。仅支持桌面 MCP 客户端。
安装前请注意
查询结果包含表名、列名、授权和策略定义等 schema 元数据,粘贴给助手即会把这些元数据发送给模型。服务器本身不连接数据库、不读取任何数据行。结论仅供参考,不能替代用两个账号实际测试。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Rls Check,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

RLS check for Supabase: who can read your customers' data?

A read-only query you run in your own Supabase SQL Editor, and an analyser that explains the result table by table:

  • which tables anyone with the public (anon) key can read or change;
  • which tables let any signed-in user read other users' rows;
  • which tables are locked, and which are safe.

The findings are written in Arabic for non-technical founders, with English labels (exposed, check it, locked, safe), and each one links to an Arabic lesson on the fix.

  • It reads no data. The query reads table descriptions only: RLS state, policies, grants and column names. Never a row.
  • It needs no key or password and opens no connection to your database. You run the query yourself, or an agent runs it through the official Supabase MCP.
  • It is the same check as the browser tool at muhandis.online/tools/rls-check: lib/rls-check.js is the site's analyser, copied byte for byte.

Usage

1. In the browser (easiest)

Open the check page, copy the query, run it in Supabase and paste the result. Everything happens in your browser; nothing is sent anywhere.

2. From the command line

bash
npx muhandis-rls-check query > query.sql     # the query: run it in your SQL Editornpx muhandis-rls-check result.json           # paste the result cell into a file; this explains itnpx muhandis-rls-check result.json --json    # the same explanation as JSON

It exits with 1 when a table is exposed, so it can be a CI step.

3. For an AI assistant (MCP)

Add it to Claude, Cursor or any MCP client. The assistant runs the query (through the official Supabase MCP, for example) and this server explains the result. The server itself holds no connection details.

json
{  "mcpServers": {    "muhandis-rls-check": { "command": "npx", "args": ["-y", "muhandis-rls-check", "mcp"] }  }}

Tools: rls_check_query returns the query, rls_check_explain explains a result.

4. As a Claude skill

The same check as a Claude skill: Claude gives you the query, then runs the pasted result through skills/rls-check/scripts/rls_check.py, a Python copy of the analyser that the tests hold to the same output as lib/rls-check.js. It needs no key and makes no network call.

  • Claude app: download rls-check.zip from the latest release, then Customize > Skills, upload it and turn it on. Code execution must be enabled.
  • Claude Code:
/plugin marketplace add Muhandis-online/rls-check/plugin install rls-check@muhandis

What it checks

LabelArabicMeaning
exposedمكشوفRLS is off and the visitor role has a grant; or a policy whose condition is true on a table with personal columns; or a view without security_invoker that visitors can read; or an update or delete policy open to everyone
check itتأكد منهData everyone can read that has no personal columns, such as a product list; or inserts without sign-in, such as a contact form
lockedمقفولRLS on with no policies, or no grants: the app cannot reach it
safeسليمPolicies tied to the row's owner through auth.uid()

Personal columns are recognised by name (email, phone, user_id, iban, national, iqama and similar).

Limits

This checks the rules you can see; it does not replace a test. After it, sign in with two accounts and confirm each one sees only its own rows. Supabase's own Security Advisor flags related issues (RLS disabled, security-definer views, permissive policies); this tool adds an explanation in Arabic for the product's owner, and a link to how to fix each finding.

Found an exposed table and want an engineer to fix it with you? muhandis.online/services/fix


Made by Muhandis, a software company for businesses in Saudi Arabia and the GCC. MIT licence.

来源:README.md,提交 676f5a9

工具

2

rls_check_query

RLS check: the read-only query

Returns a read-only SQL query that lists every table and view in the public schema of a Supabase (Postgres) project with its RLS state, grants to anon/authenticated, column names and policies. It reads no row of data. Run it in the project (SQL Editor, or a Supabase MCP execute_sql tool), then pass the single JSON result cell to rls_check_explain.

无需输入参数。

rls_check_explain

RLS check: explain the result

Explains the output of rls_check_query table by table, worst first: which tables anyone with the public (anon) key can read or change, which any signed-in user can read across users, which are locked, which are safe. Findings are in Arabic for founders (labels also given in English) and link to Arabic lessons on muhandis.online. Works offline on the pasted result.

输入参数result必填

版本历史

2
  1. v0.1.2最新Oct 30, 2026
  2. v0.1.1Oct 29, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Check 集成