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 整合