// docs / baas security / supabase rls scanner
Sganair RLS Supabase: lorg clàran le tèarainteachd-sreath a tha a dhìth no briste
'S e tèarainteachd aig ìre nan sreathan (RLS) an aon rud a sheasas eadar dàta nan cleachdaichean agad agus an eadar-lìn nuair a chuireas tu aplacaid Supabase-stèidhichte a-mach. Bidh innealan còdaidh AI a' cruthachadh còd RLS-cumadach a thrusadh, a chuireas a-mach, agus a leigeas a-mach dàta gun fhios — clàran a chaidh a chruthachadh gun RLS air a chur an comas, poileasaidhean a leughas ach nach cuir bacadh air dad, ro-innsean a choimheasas colbh ris fhèin. Tha an t-artaigil seo a' sealltainn na as urrainn do sganair RLS Supabase a dhearbhadh bhon taobh a-muigh, na ceithir cumaidhean RLS bhriste a nochdas ann an aplacaidean vibe-coded, agus mar a sganadh tu an cleachdadh agad fhèin am broinn mionaide.
Na as urrainn do sgan RLS bhon taobh a-muigh a dhearbhadh
Bidh sgan RLS fulangach a' ruith an aghaidh a' phuing-deiridh PostgREST a chuireas Supabase a-mach aig https://[project].supabase.co/rest/v1/. Cleachdaidh e dìreach an iuchair fhoillseachail anon — an aon iuchair a chleachdas am brabhsair agad — agus tomhaisidh e airson meata-dàta liosta-chlàran, leughaidhean gun aithne, agus sgrìobhaidhean gun aithne. Cha dèan e dearbhadh mar chleachdaiche a-riamh agus chan ann a bheir e buaidh air sochairean role-seirbheise. Rud sam bith as urrainn dha a dhèanamh, 's urrainn do dh'ionnsaighiche gun aithne air an eadar-lìn a dhèanamh cuideachd.
Bhon taobh a-muigh den stòr-dàta, 's urrainn do sganair na leanas a dhearbhadh le mòran misneachd:
- Tha RLS dheth air clàr. Tillidh PostgREST sreathan airson
SELECTgun aithne nuair a tha RLS dheth no nuair a tha poileasaidh ga cheadachadh. Tha an dà chùis na lorg. - 'S urrainn don dreuchd gun aithne clàran a chlàradh. Tillidh
GET /rest/v1/leis an iuchair anon an sgeama OpenAPI airson gach clàr air a bheil sochair sam bith aig an dreuchdanon. Bidh aplacaidean a chaidh a chruthachadh le AI gu tric a' toirtUSAGEair an sgeama agusSELECTair gach clàr, a leigeas mapa an sgeama gu lèir a-mach fiù 's nuair a dh'fhaodadh RLS na leughaidhean fhèin a dhiùltadh. - 'S urrainn don dreuchd gun aithne cuir a-steach. Soirbhichidh le
POSTa tha a' tomhas air cumadh nan colbhan ma chan eil poileasaidhINSERTaig RLS ga dhiùltadh — fiù 's nuair a thaSELECTglaiste. - Tha an iuchair seirbheis-dreuchd anns a' bhrabhsair-bhundle. Faisg air RLS: ma lorgas sganair
SUPABASE_SERVICE_ROLE_KEYno JWT sam bith lerole: service_roleanns a' bhundle JavaScript, tha RLS gun bhuaidh — bidh am fear aig a bheil an iuchair sin a' seachnadh gach poileasaidh.
Na nach urrainn do sgan bhon taobh a-muigh a dhearbhadh
Bi onarach mu chrìochan an sganair. Chan urrainn do sgan RLS bhon taobh a-muigh a' chlàr pg_policies agad a leughadh, na faidhlichean imrich agad, no ro-innse cinnteach poileasaidh sam bith. Tha e a' obrachadh à giùlan bogsa-dhubh, a tha a' ciallachadh gum bi e uaireannan ag aithris toradh a thèid a-mach gur e dàta poblach a dh'aon ghnothach a th' ann (clàr cuairt-litir margaidheachd, catalog toraidhean poblach). Bidh aithisg FixVibe a' comharrachadh sin mar misneachd mheadhanach nuair nach urrainn don sganair eadar-dhealachadh an rùn — sgrùd ainm a' chlàir agus dèan co-dhùnadh.
Na ceithir cumaidhean RLS bhriste a chruthaicheas innealan AI
Nuair a chuireas tu Cursor, Claude Code, Lovable, no Bolt gu Supabase, nochdaidh na h-aon cheithir pàtrain RLS bhriste thar mìltean de dh'aplacaidean. Bidh gach fear a' soirbheachadh ann an dearbhadh-seòrsa, ga thrusadh, agus ga chur a-mach:
Cumadh 1: RLS gun a chur an comas a-riamh
Am modh fàilligidh as cumanta. Cruthaichidh an imrich an clàr ach dìochuimhnichidh an leasaiche (no an inneal AI) ALTER TABLE ... ENABLE ROW LEVEL SECURITY. Bidh PostgREST gu toilichte a' frithealadh a' chlàir gu lèir do dhuine sam bith leis an iuchair anon. Càradh: ALTER TABLE public.[name] ENABLE ROW LEVEL SECURITY; ALTER TABLE public.[name] FORCE ROW LEVEL SECURITY;. Chan eil FORCE roghainneil — às a aonais bidh sealbhadair a' chlàir (agus dreuchd sam bith le seilbh a' chlàir) a' seachnadh RLS.
ALTER TABLE public.[name] ENABLE ROW LEVEL SECURITY;
ALTER TABLE public.[name] FORCE ROW LEVEL SECURITY;Cumadh 2: RLS air a chur an comas, gun phoileasaidhean
Modh fàilligidh nas seilbhe. Tha RLS air a chur an comas ach chan eil poileasaidhean air an sgrìobhadh. Is diùltadh a tha mar bhun-roghainn ann am PostgreSQL, agus mar sin chan fhaic cleachdaichean dearbhaichte dad — agus cuiridh an leasaiche USING (true) ris airson 's gum bi an aplacaid ag obair, a leigeas le gach duine gach nì a leughadh. Càradh: sgrìobh poileasaidh a tha air a sgòpadh le auth.uid(): CREATE POLICY "select_own" ON public.[name] FOR SELECT USING (auth.uid() = user_id); agus poileasaidh INSERT/UPDATE/DELETE co-ionann.
CREATE POLICY "select_own"
ON public.[name]
FOR SELECT
USING (auth.uid() = user_id);Cumadh 3: Poileasaidh a' coimeas colbh ris fhè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.
Cumadh 4: Poileasaidh air SELECT ach chan ann air INSERT/UPDATE
Glasaidh an leasaiche leughaidhean ach dìochuimhnichidh e sgrìobhaidhean. Tha poileasaidhean RLS gach àithne. Bidh FOR SELECT a' dìon leughaidhean a-mhàin; 's urrainn do chliant gun aithne INSERT a dhèanamh fhathast mura h-eil poileasaidh ga dhiùltadh. Càradh: sgrìobh poileasaidh gach àithne, no cleachd FOR ALL le clàsan USING agus WITH CHECK follaiseach.
Mar a tha sganair RLS Supabase aig FixVibe ag obair
Ruithidh an sgrùdadh baas.supabase-rls ann an trì ìrean, gach fear le ìrean misneachd shoilleir:
- Ìre 1 — comharrachadh. Snàighidh an sganair an aplacaid a chaidh a chur a-mach, sgrùdaidh e a bhundle JavaScript, agus tarraingidh e URL pròiseict Supabase agus an iuchair anon bho rèiteachadh-ruith. Gun tomhas DNS, gun shàrachadh — leughaidh e na leughas am brabhsair.
- Ìre 2 — lorg an sgeama. Tillidh aon
GET /rest/v1/leis an iuchair anon an sgeama OpenAPI airson gach clàr a chì an dreuchd anon. Bidh an sganair a' clàradh ainmean nan clàran ach cha leugh e dàta sreath aig an ìre seo. - Ìre 3 — tomhasan leughaidh is sgrìobhaidh. Airson gach clàr a lorgar, cuiridh an sganair aon
SELECTgun aithne lelimit=1. Ma thilleas sreathan, tha RLS ro fhosgailte. Stadaidh an sganair an sin — chan àireamhaich e sreathan, chan amhaircidh e duilleagan, agus chan atharraich e dàta. Tha tomhasan INSERT cuingealaichte ri seilbh àrainn dearbhte agus aonta-fhèin follaiseach; cha dèan iad sin a-riamh an aghaidh targaidean gun dearbhadh.
Bidh gach lorg a' tighinn leis an URL iarrtais cinnteach, inbhe na freagairt, cumadh na freagairt (ceann a-mhàin), agus ainm a' chlàir. 'S e bloc SQL lethbhreac-paste a th' anns a' chur-thairis càraidh AI aig bonn an luirg a ruitheas tu ann an deasaiche SQL Supabase.
Dè rinneas tu nuair a lorgas an sganair rud
Tha gach lorg RLS na èiginn aig ruith. Tha puingean-deiridh PostgREST poblach gam sganadh le luchd-ionnsaigh ann am mionaidean. Tha an òrdugh càraidh meacanaigeach:
- Sgrùd gach clàr. Ruith
SELECT schemaname, tablename, rowsecurity FROM pg_tables WHERE schemaname = 'public';ann an deasaiche SQL Supabase. Tha sreath sam bith lerowsecurity = falsena duilgheadas. - Cuir RLS an comas air gach clàr poblach. Cleachd
ENABLE ROW LEVEL SECURITYagusFORCE ROW LEVEL SECURITYmar bhun-roghainn air gach clàr a thathar a' cruthachadh — dèan e na theamplaid imrich. - Sgrìobh poileasaidhean àithne-air-àithne. Na cleachd
FOR ALL USING (true). Sgrìobh poileasaidhean follaiseach airson SELECT, INSERT, UPDATE, DELETE — gach fear air a sgòpadh riauth.uid()no colbh org-id àauth.jwt(). - Dearbh le dàrna cunntas. Clàraich mar chleachdaiche eile, feuch ri clàran cleachdaiche eile a leughadh tron API REST gu dìreach. Ma tha an fhreagairt
200, tha am poileasaidh briste. - Ath-sganaich. Às dèidh càraidh, ath-ruith sganadh FixVibe an aghaidh an aon URL. Bu chòir don lorg
baas.supabase-rlsfalbh.
-- 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;Mar a tha seo a' coimeas ri sganairean eile
Chan eil fios aig a' mhòr-chuid de dh'innealan DAST coitcheann (Burp Suite, OWASP ZAP, Nessus) dè a th' ann an PostgREST. Snàighidh iad an aplacaid agad, leigidh iad seachad an t-slighe /rest/v1/, agus aithrisidh iad mu na duilleagan HTML a thuigeas iad. 'S e innealan mion-sgrùdaidh stèidh-shuidhichte a th' ann an Snyk agus Semgrep — lorgaidh iad faidhlichean imrich anns an stòr-tasgaidh agad le gairmean RLS a tha a dhìth, ach chan urrainn dhaibh dearbhadh gu bheil an stòr-dàta a chuireadh a-mach mì-rèidhte. Suidhichidh FixVibe sa bheàrn: fulangach, BaaS-fiosrach, dìreach air na as urrainn do dh'ionnsaighiche gun dearbhadh a dhearbhadh bhon URL phoblach.
Ceistean Cumanta
An leugh no an atharraich an sganair an dàta agam?
Cha leugh. Bidh sganaidhean fulangach a' cur a-mach co-dhiù aon SELECT ... limit=1 air gach clàr a lorgar gus dearbhadh a bheil RLS a' ceadachadh leughaidhean gun aithne. Bidh an sganair a' clàradh cumadh na freagairt, chan e susbaint na sreath. Tha tomhasan INSERT, UPDATE, agus DELETE cuingealaichte ri seilbh àrainn dearbhte agus cha ruith iad an aghaidh targaidean gun dearbhadh a-riamh.
An obraich seo ma tha am pròiseact Supabase agam air stad no air àrainn shaobhaidh?
Tillidh pròiseactan a tha stad 503 air gach iarrtas — aithrisidh an sganair am pròiseact mar nach gabh a ruigsinn. Bidh àrainnean saobhaidh ag obair fhad 's a luchdaicheas an aplacaid SDK cliant Supabase sa bhrabhsair; tarraingidh an sganair URL a' phròiseict bhon bhundle co-dhiù.
Dè ma tha an iuchair anon agam air a chuairteachadh no ma dh'atharraich an iuchair fhoillseachail?
Ath-ruith an sganadh. Tarraingidh an sganair an iuchair às ùr bhon bhundle làithreach air gach ruith. Cha dèan cuairteachadh ach an aithisg roimhe sin a chur à neart, chan e staid poileasaidh an stòir-dàta.
An sgrùd an sganair am modail iuchrach foillseachail Supabase ùr (<code>sb_publishable_*</code>)?
Sgrùd. Aithnichidh an sgrùdaiche an dà chuid JWTan anon dìleab agus na h-iuchraichean sb_publishable_* ùra, agus dèilig riutha gu co-ionann — tha an dà chuid airson a bhith poblach agus tha an dà chuid a' fàgail RLS mar an aon loidhne dìon.
An ath cheum
Ruith sganadh FixVibe an-asgaidh an aghaidh URL a' chinneasachaidh agad — tha an sgrùdadh baas.supabase-rls air a chur an comas air a h-uile plana, an sreath an-asgaidh nam measg. Airson leughadh nas doimhne air dè eile as urrainn leigeil a-mach à pròiseact Supabase, faic Iuchair seirbheis-dreuchd Supabase air a foillseachadh ann an JavaScript agus Liosta-sgrùdaidh tèarainteachd bhucaidean stòrais Supabase. Airson an t-sealladh fharsaing thar gach solaraiche BaaS, leugh Sganair mì-rèiteachaidh BaaS.
