FixVibe

// 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 SELECT gan 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ól anon air. Tugann aipeanna a ghintear le AI USAGE ar an scéimre agus SELECT ar 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 POST promhaidh le buille faoi thuairim ar chruth an cholúin mura bhfuil polasaí INSERT ag RLS á dhiúltú — fiú má tá SELECT faoi 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_KEY nó aon JWT le role: service_role i 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.

sql
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.

sql
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:

  1. 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í.
  2. 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.
  3. Céim 3 — promhaidh léite agus scríofa. I gcás gach tábla a aimsíodh, eisíonn an scanóir SELECT amháin gan ainm le limit=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:

  1. 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 le rowsecurity = false.
  2. Cumasaigh RLS ar gach tábla poiblí. Réamhshocraigh go ENABLE ROW LEVEL SECURITY agus FORCE ROW LEVEL SECURITY ar gach tábla a chruthaítear — déan teimpléad imirce de.
  3. 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 le auth.uid() nó colún org-id ó auth.jwt().
  4. 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.
  5. 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-rls glanadh.
sql
-- 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.

// scan do dhromchla baas

Aimsigh an tábla oscailte sula bhfaighidh duine eile é.

Cuir URL táirgthe isteach. Áiríonn FixVibe na soláthraithe BaaS a labhraíonn d'aip leo, déanann sé méarloirg ar a gcrícphointí poiblí, agus tuairiscíonn sé cad is féidir le cliant gan fhíordheimhniú a léamh nó a scríobh. Saor in aisce, gan suiteáil, gan chárta.

  • Sraith saor in aisce — 3 scanadh sa mhí, gan chárta clárúcháin.
  • Méarlorg BaaS éighníomhach — gan gá le fíorú fearainn.
  • Supabase, Firebase, Clerk, Auth0, Appwrite, agus tuilleadh.
  • Leideanna deisithe AI ar gach toradh — greamaigh ar ais isteach i Cursor / Claude Code.
Rith scanadh BaaS saor in aisce

níl clárú ag teastáil

Scanóir RLS Supabase: aimsigh táblaí gan slándáil ar leibhéal as as nó ina bhfuil sí briste — Docs · FixVibe