// docs / baas security / supabase rls scanner
Scanóir RLS Supabase: aimsigh táblaí gan slándáil ar leibhéal as as nó ina bhfuil sí briste
Is é slándáil ar leibhéal as as (RLS) an t-aon rud atá idir sonraí do chustaiméirí agus an t-idirlíon nuair a sheolann tú aip a bhfuil tacaíocht Supabase aige. Gineann uirlisí códaithe AI cód cruth-RLS a thiomsaíonn, a sheoltar, agus a sceitheann sonraí go ciúin — táblaí cruthaithe gan RLS cumasaithe, polasaithe a léann ach nach gcuireann srian riamh, réamhinsintí a chuireann colún i gcomparáid leis féin. Léiríonn an t-alt seo cad is féidir le scanóir RLS Supabase a chruthú ón taobh amuigh, na ceithre chruth de RLS briste a fheictear in aipeanna vibe-chódaithe, agus conas do imscaradh féin a scanadh in níos lú ná nóiméad.
Cad is féidir le scanadh seachtrach RLS a chruthú
Ritheann scanadh éighníomhach RLS in aghaidh an chrícphointe PostgREST a nochtann Supabase ag https://[project].supabase.co/rest/v1/. Úsáideann sé an eochair anon in-fhoilsithe amháin — an eochair chéanna a úsáideann do bhrabhsálaí — agus déanann sé promhadh ar mheiteashonraí liosta táblaí, léamha gan ainm, agus scríbhinní gan ainm. Ní fhíordheimhníonn sé riamh mar úsáideoir agus ní bhaineann sé riamh le pribhléidí na seirbhíse. Is féidir le hionsaitheoir gan fhíordheimhniú ar an idirlíon aon rud is féidir leis a dhéanamh.
Ón taobh amuigh den bhunachar sonraí, is féidir le scanóir an méid seo a leanas a dhearbhú le hardmhuinín:
- Tá RLS díchumasaithe ar thábla. Filleann PostgREST sraitheanna le haghaidh
SELECTgan ainm nuair atá RLS as nó nuair a cheadaíonn polasaí é. Tá an dá chás ina dtoradh. - Is féidir leis an ról gan ainm táblaí a liostáil. Filleann
GET /rest/v1/leis an eochair anon an scéimre OpenAPI le haghaidh gach tábla a bhfuil aon phribhléid ag an rólanonair. Tugann aipeanna a ghintear le AIUSAGEar an scéimre agusSELECTar gach tábla go minic, a nochtann an mapa scéimre iomlán fiú nuair a dhiúltaíonn RLS na fíor-léamha. - Is féidir leis an ról gan ainm cur isteach. Éireoidh le
POSTpromhaidh le buille faoi thuairim ar chruth an cholúin mura bhfuil polasaíINSERTag RLS á dhiúltú — fiú má táSELECTfaoi ghlas. - Tá eochair an ról seirbhíse i mburla an bhrabhsálaí. In aice le RLS: má aimsíonn scanóir
SUPABASE_SERVICE_ROLE_KEYnó aon JWT lerole: service_rolei mburla JavaScript, tá RLS gan mhaith — sáraíonn an té a bhfuil an eochair sin aige gach polasaí.
Cad nach féidir le scanadh seachtrach a chruthú
Bí macánta faoi theorainneacha an scanóra. Ní féidir le scanadh seachtrach RLS do thábla pg_policies, do chomhaid imirce, nó réamhinsint chruinn aon polasaí a léamh. Tugann sé tátal ó iompar bosca-dubh, rud a chiallaíonn go dtuairisceoidh sé toradh uaireanta a léireoidh gur sonraí poiblí d'aon ghnó iad (tábla nuachtlitreach margaíochta, catalóg táirgí poiblí). Cuireann tuarascáil FixVibe bratach muinín mheánach ar na cinn sin nuair nach féidir leis an scanóir an rún a dhímhíniú — déan athbhreithniú ar ainm an tábla agus déan cinneadh.
Na ceithre chruth de RLS briste a tháirgeann uirlisí AI
Nuair a dhíríonn tú Cursor, Claude Code, Lovable, nó Bolt ar Supabase, tagann na ceithre phatrún chéanna de RLS briste chun cinn thar na mílte aipeanna. Téann gach ceann acu trí sheiceáil cineáil, tiomsaíonn, agus seoltar:
Cruth 1: RLS nár cumasaíodh riamh
An modh teipe is coitianta. Cruthaíonn an imirce an tábla ach déanann an forbróir (nó an uirlis AI) dearmad ar ALTER TABLE ... ENABLE ROW LEVEL SECURITY. Cuireann PostgREST an tábla iomlán ar fáil go sásta d'aon duine a bhfuil an eochair anon aige. Réiteach: ALTER TABLE public.[name] ENABLE ROW LEVEL SECURITY; ALTER TABLE public.[name] FORCE ROW LEVEL SECURITY;. Tá FORCE riachtanach — gan é, sáraíonn úinéir an tábla (agus aon ról le húinéireacht tábla) RLS.
ALTER TABLE public.[name] ENABLE ROW LEVEL SECURITY;
ALTER TABLE public.[name] FORCE ROW LEVEL SECURITY;Cruth 2: RLS cumasaithe, polasaithe ar bith
Teip níos caolchúisí. Tá RLS cumasaithe ach níor scríobhadh polasaí ar bith. Is é an réamhshocrú in PostgreSQL diúltú, mar sin ní fheiceann úsáideoirí fíordheimhnithe rud ar bith — agus cuireann an forbróir USING (true) leis chun an aip a chur ag obair, rud a cheadaíonn do gach duine gach rud a léamh. Réiteach: scríobh polasaí atá scópaithe le auth.uid(): CREATE POLICY "select_own" ON public.[name] FOR SELECT USING (auth.uid() = user_id); agus polasaí meaitseála INSERT/UPDATE/DELETE.
CREATE POLICY "select_own"
ON public.[name]
FOR SELECT
USING (auth.uid() = user_id);Cruth 3: Cuireann polasaí colún i gcomparáid leis féin
A copy-paste artefact. The developer writes <code>USING (user_id = user_id)</code> — which is always true — instead of <code>USING (auth.uid() = user_id)</code>. Type-checks pass; the policy permits every row. <strong>Fix:</strong> always compare a column to a function call (<code>auth.uid()</code>, <code>auth.jwt()->>'org_id'</code>, etc.), never to itself or to a constant.
Cruth 4: Polasaí ar SELECT ach ní ar INSERT/UPDATE
Cuireann an forbróir glas ar léamha ach déanann sé dearmad ar scríbhinní. Tá polasaithe RLS in aghaidh an ordaithe. Cosnaíonn FOR SELECT léamha amháin; is féidir le cliant gan ainm INSERT a dhéanamh fós mura ndiúltaíonn polasaí é. Réiteach: scríobh polasaí in aghaidh an ordaithe, nó úsáid FOR ALL le clásail USING agus WITH CHECK shainráite.
Conas a oibríonn scanóir RLS Supabase FixVibe
Ritheann an seic baas.supabase-rls i dtrí chéim, gach ceann acu le leibhéil mhuiníne shainráite:
- Céim 1 — méarlorg. Snámhann an scanóir an aip imscartha, déanann sé pársáil ar a bhurla JavaScript, agus baineann sé URL an tionscadail Supabase agus an eochair anon as an gcumraíocht ama rite. Gan tomhas DNS, gan brúfhórsa — léann sé an méid a léann an brabhsálaí.
- Céim 2 — aimsiú scéimre. Filleann
GET /rest/v1/amháin leis an eochair anon an scéimre OpenAPI le haghaidh gach tábla is féidir leis an ról anon a fheiceáil. Taifeadann an scanóir ainmneacha táblaí ach ní léann sé sonraí sraitheanna ag an gcéim seo. - Céim 3 — promhaidh léite agus scríofa. I gcás gach tábla a aimsíodh, eisíonn an scanóir
SELECTamháin gan ainm lelimit=1. Má fhilleann sraitheanna, tá RLS ceadaitheach. Stopann an scanóir ansin — ní áiríonn sé sraitheanna, ní leathnaíonn sé, agus ní athraíonn sé sonraí. Tá promhaidh INSERT faoi gheata taobh thiar d'fhíorú úinéireachta fearainn agus rogha sainráite; ní lasann siad riamh in aghaidh spriocanna gan fhíorú.
Tagann gach toradh le URL beacht an iarratais, stádas an fhreagra, cruth an fhreagra (ceanntásc amháin), agus ainm an tábla. Is bloc SQL cóip-greamaigh é an leid deisithe AI ag bun an toraidh a ritheann tú in eagarthóir SQL Supabase.
Cad ba chóir a dhéanamh nuair a aimsíonn an scanóir rud éigin
Is éigeandáil ama rite gach toradh RLS. Scanann ionsaitheoirí crícphointí poiblí PostgREST i nóiméid. Tá an seicheamh leigheasa meicniúil:
- Iniúchadh gach tábla. Rith
SELECT schemaname, tablename, rowsecurity FROM pg_tables WHERE schemaname = 'public';in eagarthóir SQL Supabase. Is fadhb í aon sraith lerowsecurity = false. - Cumasaigh RLS ar gach tábla poiblí. Réamhshocraigh go
ENABLE ROW LEVEL SECURITYagusFORCE ROW LEVEL SECURITYar gach tábla a chruthaítear — déan teimpléad imirce de. - Scríobh polasaithe ordú ar ordú. Ná húsáid
FOR ALL USING (true). Scríobh polasaithe sainráite do SELECT, INSERT, UPDATE, DELETE — gach ceann acu scópaithe leauth.uid()nó colún org-id óauth.jwt(). - Fíoraigh le dara cuntas. Cláraigh mar úsáideoir difriúil, déan iarracht taifid úsáideora eile a léamh tríd an REST API go díreach. Má tá an freagra
200, tá an polasaí briste. - Athscanadh. Tar éis an réiteach a chur i bhfeidhm, rith scanadh FixVibe arís in aghaidh an URL chéanna. Ba chóir don toradh
baas.supabase-rlsglanadh.
-- Audit every table for missing RLS. Run in the Supabase SQL editor.
SELECT schemaname, tablename, rowsecurity
FROM pg_tables
WHERE schemaname = 'public'
ORDER BY rowsecurity, tablename;Conas a chuireann sé seo i gcomparáid le scanóirí eile
Níl a fhios ag formhór na n-uirlisí DAST cineálach (Burp Suite, OWASP ZAP, Nessus) cad é PostgREST. Snámhfaidh siad d'aip, déanfaidh siad neamhaird den chosán /rest/v1/, agus tuairisceoidh siad ar na leathanaigh HTML a thuigeann siad. Is uirlisí anailíse statacha iad Snyk agus Semgrep — aimsíonn siad comhaid imirce i do stór le glaonna RLS ar iarraidh, ach ní féidir leo a chruthú go bhfuil an bunachar sonraí imscartha míchumraithe. Suíonn FixVibe sa bhearna: éighníomhach, le feasacht ar BaaS, dírithe ar an méid is féidir le hionsaitheoir gan fhíordheimhniú a chruthú ón URL poiblí.
Ceisteanna coitianta
An léifidh nó an n-athróidh an scanóir mo chuid sonraí?
Ní léifidh. Eisíonn scanaí éighníomhacha ar a mhéid SELECT ... limit=1 amháin in aghaidh an tábla a aimsíodh chun a dhearbhú an gceadaíonn RLS léamha gan ainm. Taifeadann an scanóir cruth an fhreagra, ní inneachar na sraitheanna. Tá promhaidh INSERT, UPDATE, agus DELETE faoi gheata taobh thiar d'fhíorú úinéireachta fearainn agus ní ritheann siad riamh in aghaidh spriocanna gan fhíorú.
An n-oibríonn sé seo má tá mo thionscadal Supabase curtha ar sos nó ar fhearann saincheaptha?
Filleann tionscadail ar sos 503 ar gach iarratas — tuairiscíonn an scanóir an tionscadal mar dho-shroichte. Oibríonn fearainn shaincheaptha chomh fada agus a lódálann an aip imscartha SDK an chliaint Supabase fós sa bhrabhsálaí; baineann an scanóir URL an tionscadail amach as an mburla cibé scéal.
Cad a tharlóidh má rothlaítear m'eochair anon nó má athraíonn m'eochair in-fhoilsithe?
Athrith an scanadh. Athbhaineann an scanóir an eochair as an mburla reatha ar gach rith. Neamhbhailíonn rothlú an tuarascáil roimhe seo amháin, ní staid pholasaí an bhunachair sonraí.
An seiceálann an scanóir an múnla nua eochrach in-fhoilsithe Supabase (<code>sb_publishable_*</code>)?
Seiceálann. Aithníonn an braiteoir an dá JWT oidhreachta anon agus na heochracha níos nuaí sb_publishable_* agus caitheann sé leo go comhionann — tá an dá cheann beartaithe a bheith poiblí agus fágann an dá cheann RLS mar an t-aon líne chosanta.
Na chéad chéimeanna eile
Rith scanadh FixVibe saor in aisce in aghaidh do URL táirgthe — tá an seic baas.supabase-rls cumasaithe ar gach plean lena n-áirítear an tsraith saor in aisce. Le haghaidh tuilleadh sonraí ar cad eile is féidir a sceitheadh ó thionscadal Supabase, féach Eochair an ról seirbhíse Supabase nochta in JavaScript agus Seicliosta slándála buicéid stórais Supabase. Le haghaidh an radhairc scáth ar fud na soláthraithe BaaS go léir, léigh Scanóir míchumraíochta BaaS.
