FixVibe

// docs / baas security / supabase service role exposure

Eochair an ról seirbhíse Supabase nochta in JavaScript: cad a chiallaíonn sé agus conas é a aimsiú

Is í eochair an ról seirbhíse Supabase máistir-eochair do bhunachair sonraí. Sáraíonn aon duine a bhfuil sí aige Row-Level Security, is féidir leis gach colún de gach tábla a léamh, agus is féidir leis aon rud is mian leis a scríobh nó a scriosadh. Tá sí deartha le cónaí amháin i gcód taobh an fhreastalaí — riamh sa bhrabhsálaí. Nuair a sheolann uirlis códaithe AI chuig an mburla JavaScript í, tá do bhunachar sonraí, go héifeachtach, poiblí. Míníonn an t-alt seo cruth an JWT a aithníonn eochair sceite, na trí phatrún uirlisí AI a tháirgeann an sceitheadh, cad ba chóir a dhéanamh sa chéad uair an chloig tar éis braite, agus conas é a scanadh go huathoibríoch sula bhfeicfidh úsáideoirí é.

Cad é eochair an ról seirbhíse

Eisíonn Supabase dhá eochair ar leith do gach tionscadal: an eochair anon (ar a dtugtar an eochair in-fhoilsithe i dtionscadail níos nuaí) agus an eochair service_role. Is JSON Web Tokens iad an dá cheann sínithe ag rún JWT do thionscadail. Is é an difríocht ná an éileamh role a bácáiltear in ualach an JWT — anon don eochair phoiblí, service_role don mháistir-eochair. Téann PostgREST, Supabase Storage, agus Supabase Auth go léir isteach i mód sáraithe-gach-rud nuair a fheiceann siad an t-éileamh service_role.

Díchódaigh aon eochair Supabase ag jwt.io agus féach ar an ualach. Tá cruth JWT ról-seirbhíse do-aitheanta:

Ualach díchódaithe de JWT ról-seirbhíse (taispeánta mar bhloc le haibhsiú comhréire thíos).

json
{
  "iss": "supabase",
  "ref": "[project-ref]",
  "role": "service_role",
  "iat": 1700000000,
  "exp": 2000000000
}

Eisíonn tionscadail Supabase níos nuaí eochracha rúnda-stíleacha leis an réimír sb_secret_ in ionad JWT. Tá an t-iompar comhionann — tá aon rud a iompraíonn sb_secret_ i mburla poiblí chomh tubaisteach céanna.

Conas a sceitheann uirlisí códaithe AI eochair an ról seirbhíse

Tá na trí phatrún chéanna feicthe againn ar fud na mílte aipeanna vibe-chódaithe. Tosaíonn gach ceann acu le forbróir ag iarraidh cabhair ar uirlis AI agus críochnaíonn sé leis an eochair seirbhíse curtha isteach i mburla.

Patrún 1: Comhad .env aonair le réimír NEXT_PUBLIC_

Iarrann an forbróir ar an uirlis AI "Supabase a chur ar bun" agus glacann sé le .env amháin leis an dá eochair. An uirlis AI — oilte ar chorpas ina nochtar an chuid is mó de na hathróga timpeallachta trí NEXT_PUBLIC_* — cuireann sí réimír NEXT_PUBLIC_ ar an dá cheann. Cuireann Next.js aon rud a mheaitseálann an réimír sin isteach i mburla an chliaint ag am tógála. Seol chuig Vercel, agus tá an eochair seirbhíse i main.[hash].js.

Patrún 2: Eochair mhícheart sa ghlao createClient

Greamaíonn an forbróir an dá eochair isteach i gcomhad config.ts a ghin an AI, agus líonann an AI an glao createClient() ar thaobh an bhrabhsálaí le process.env.SUPABASE_SERVICE_ROLE_KEY trí dhearmad. Tarraingíonn an tógáil an athróg isteach, agus tagann an JWT i dtír sa mburla.

Patrún 3: Eochair ról-seirbhíse códaithe go crua i scripteanna síolta

Iarrann an forbróir ar an uirlis AI script a scríobh a chuireann síol sa bhunachar sonraí. Códaíonn an AI eochair an ról seirbhíse go díreach isteach sa chomhad (seachas léamh ón timpeallacht), tiomnaíonn sé an comhad don stór, agus tá an stór GitHub poiblí nó bealach /scripts/seed.js na haipe imscartha ag freastal ar an eochair anois.

Conas a bhraitheann scanadh burla FixVibe an sceitheadh

Íoslódálann seic burla-rúin FixVibe gach comhad JavaScript dá dtagraíonn an aip imscartha — smutáin iontrála, smutáin a lódáiltear go leisciúil, oibrithe gréasáin, oibrithe seirbhíse — agus ritheann sé iad trí bhraiteoir a dhíchódaíonn aon rud a mheaitseálann cruth JWT (eyJ[base64-header].eyJ[base64-payload].[signature]). Má tá "role": "service_role" san ualach díchódaithe, tuairiscíonn an scanadh é mar thoradh criticiúil le cosán an chomhaid agus an líne bheacht ar a bhfuil an eochair le feiceáil. Meaitseálann an seic céanna an patrún níos nuaí sb_secret_* faoin réimír freisin.

Ní dhéanann an scanadh fíordheimhniú riamh leis an eochair aimsithe. Aithníonn sé an cruth agus tuairiscíonn sé an sceitheadh — bheadh úsáid na heochrach chun inshaothrúlacht a chruthú ina rochtain neamhúdaraithe ar do bhunachar sonraí. Tá an cruthúnas san ualach JWT féin.

Braiteadh — cad ba chóir a dhéanamh sa chéad uair an chloig

Is éigeandáil ama rite eochair sceite an ról seirbhíse. Glac leis go bhfuil an eochair scríobtha — déanann ionsaitheoirí monatóireacht ar bhurlaí poiblí i bhfíor-am. Caith leis an mbunachar sonraí mar a bheadh sé i mbaol go dtí go bhfuil an eochair rothlaithe agat agus go bhfuil iniúchadh déanta agat ar ghníomhaíocht le déanaí.

  1. Rothlaigh an eochair láithreach. I bPainéal Supabase, téigh chuig Project Settings → API → Service role key → Reset. Tá an seaneochair neamhbhailíthe laistigh de shoicindí. Caithfear aon chód taobh an fhreastalaí a úsáideann an eochair a nuashonrú agus a athimscaradh sular thuile an rothlú.
  2. Iniúchadh gníomhaíocht le déanaí sa bhunachar sonraí. Oscail Database → Logs sa phainéal. Scag ar na 7 lá deireanacha. Lorg ceisteanna neamhghnácha SELECT * in aghaidh táblaí le PII, ráitis mhóra UPDATEDELETE, agus iarratais ó IPanna lasmuigh de do bhonneagar aitheanta. Logáilann Supabase an ceanntásc x-real-ip ar gach iarratas.
  3. Seiceáil rudaí stórais. Tabhair cuairt ar Storage → Logs agus déan athbhreithniú ar íoslódálacha comhad le déanaí. Tugann eochair sceite an ról seirbhíse rochtain sáraithe-gach-rud ar bhuicéid phríobháideacha freisin.
  4. Bain an eochair as rialú foinse. Fiú tar éis rothlú, ciallaíonn an JWT a fhágáil i do stair git go bhfuil sé infheicthe sa stór poiblí. Úsáid git filter-repo nó BFG Repo-Cleaner chun é a scuabadh ón stair, ansin déan brú-fhórsa (tabhair foláireamh do chomhoibrithe ar dtús).
  5. Athscanadh tar éis réiteach. Rith scanadh úr FixVibe in aghaidh na haipe athimscartha. Ba chóir don toradh burla-rúin glanadh. Deimhnigh nach bhfuil aon JWT service_role ná teaghrán sb_secret_* fágtha in aon smután.

Cosc ar an sceitheadh sa chéad áit

Is é an réiteach struchtúrach disciplín ainmnithe móide cosaintí leibhéal-uirlise:

  • Ná cuir an réimír NEXT_PUBLIC_*, VITE_*, nó aon réimír burla-isteach-líne eile ar an eochair seirbhíse riamh. Is é coinbhinsiún an ainmnithe an teorainn — urramaíonn gach creat é.
  • Coinnigh an eochair seirbhíse amach as .env go hiomlán ar mheaisín an fhorbróra. Léigh é ó bhainisteoir rúin (Doppler, Infisical, athróga timpeallachta criptithe Vercel) ar imscaradh, ná tiomnaigh go háitiúil é riamh.
  • <strong>Mark every Supabase client construction with explicit context.</strong> Files named <code>supabase/browser.ts</code> use the anon key; files named <code>supabase/server.ts</code> use the service-role key with <code>import 'server-only'</code> at the top. The <code>server-only</code> import causes a build error if a client component tries to consume the module.
  • <strong>Add a pre-commit hook that greps for JWT-shaped strings.</strong> <code>git diff --staged | grep -E 'eyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+'</code> catches both anon and service tokens before they leave your machine.
  • Cuir geata CI leis a scanann an t-aschur tógála. Tar éis next build, déan grep ar an aschur .next/static/chunks/ don teaghrán service_role. Teip ar an tógáil má mheaitseálann aon rud.
bash
# Pre-commit hook: refuse any staged JWT-shaped string.
git diff --staged \
  | grep -E 'eyJ[A-Za-z0-9_-]+\.eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+' \
  && echo "JWT detected in staged changes — refusing commit" \
  && exit 1

# CI gate: fail the build if "service_role" shipped to the static bundle.
grep -RE 'service_role|sb_secret_' .next/static/chunks/ \
  && echo "Service-role credential leaked into bundle" \
  && exit 1

Ceisteanna coitianta

Cé chomh tapa is a aimsíonn ionsaitheoirí eochracha sceite an ról seirbhíse Supabase i ndáiríre?

Trálálann scanóirí burla poiblí imscaradh nua laistigh de nóiméid. Tá dúshaothraithe oibre clárlitir ag taighdeoirí in aghaidh tionscadail nua Supabase faoi bhun uair an chloig ón gcéad imscaradh. Caith le haon nochtadh ról-seirbhíse mar fhuinneog 60 nóiméad, ní mar fhuinneog 60 lá.

An leor an eochair a rothlú, nó an gcaithfidh mé glacadh leis go ndearnadh easaoradh sonraí?

Neamhbhailíonn rothlú an eochair sceite ach ní chuireann sé sonraí a tharraingíodh cheana féin ar ais. Má tá PII, sonraí íocaíochta, nó aon sonraí rialaithe i do tháblaí, b'fhéidir go bhfuil oibleagáid fógra ort faoi GDPR (72 uair), CCPA, nó HIPAA. Iniúchadh na logaí agus téigh i gcomhairle le comhairleoir dlí má léiríonn an t-iniúchadh rochtain amhrasach.

An féidir le RLS mé a chosaint má sceitheann eochair an róil sheirbhíse?

Ní féidir. Sáraítear slándáil ar leibhéal as as go hiomlán ag an éileamh service_role. Tá sé sin de réir dearaidh — tá an eochair ann go díreach chun cead a thabhairt do chód cúl scipeáil RLS le haghaidh oibríochtaí riarthóra. Is é an leigheas a chinntiú nach sroicheann an eochair comhthéacs riamh inar féidir le hionsaitheoir í a léamh.

An mbaineann sé seo leis an múnla nua eochair in-fhoilsithe / rúnda Supabase (<code>sb_publishable_</code> / <code>sb_secret_</code>)?

Baineann — aicme riosca chomhionann. Is í an eochair sb_secret_* an fhormáid eochrach rúnda nua a chuirtear in ionad an JWT ról-seirbhíse i dtionscadail níos nuaí. Tá aon rud a iompraíonn sb_secret_* i mburla chomh tubaisteach céanna le JWT sceite ról-seirbhíse. Meaitseálann braiteoir burla-rúin FixVibe an dá chruth.

Cad faoin eochair anon / in-fhoilsithe — an bhfuil sé sin sábháilte sa bhurla?

Tá, de réir dearaidh. Tá an eochair anon beartaithe le cónaí sa bhrabhsálaí agus is é a úsáideann gach cliant Supabase gréasáin. Braitheann a sábháilteacht go hiomlán ar RLS a bheith cumraithe i gceart ar gach tábla poiblí. Féach an t-alt Scanóir RLS Supabase le haghaidh cad ba chóir a sheiceáil.

Na chéad chéimeanna eile

Rith scanadh FixVibe in aghaidh do URL táirgthe — tá an seic burla-rúin saor in aisce, gan clárú, agus tuairiscíonn sé nochtadh service_role i níos lú ná nóiméad. Cuir é seo le chéile le halt Scanóir RLS Supabase chun a fhíorú go bhfuil an ciseal RLS ag déanamh a phoist, agus le Seicliosta slándála buicéid stórais Supabase chun rochtain ar chomhaid a ghlasáil. Le haghaidh cúlra ar an gcúis a ghineann uirlisí AI an aicme sceite seo chomh hiontaofa, léigh Cén fáth a bhfágann uirlisí códaithe AI bearnaí slándála.

// 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

Eochair an ról seirbhíse Supabase nochta in JavaScript: cad a chiallaíonn sé agus conas é a aimsiú — Docs · FixVibe