Ազդեցություն
Հարձակվողները կարող են շրջանցել հավելվածի տրամաբանությունը տվյալների բազայում գրառումները կարդալու, թարմացնելու կամ ջնջելու համար, եթե տողերի մակարդակի անվտանգությունը (RLS) պատշաճ կերպով չի կիրառվել [S1]: Սա հաճախ հանգեցնում է Անձնական նույնականացման տեղեկատվության (PII) կամ կիրառական զգայուն տվյալների բացահայտմանը այն օգտվողներին, ովքեր մուտք ունեն միայն հանրային անանուն API բանալի:
Արմատային պատճառ
Supabase-ն օգտագործում է Postgres Row Level Security՝ տվյալների բազայի մակարդակով տվյալների հասանելիությունը կառավարելու համար, ինչը հիմնարար է [S1] տվյալների ապահովման համար: Next.js միջավայրում մշակողները պետք է ստեղծեն Supabase հաճախորդ, որը ճիշտ է մշակում թխուկները և նիստերը՝ սերվերի կողմից [S2] մատուցման ժամանակ անվտանգությունը պահպանելու համար: Խոցելիությունը սովորաբար առաջանում է, երբ.
- Աղյուսակները ստեղծվում են առանց RLS միացվածի՝ դրանք հասանելի դարձնելով [S1] հանրային անոն բանալիով:
- Supabase հաճախորդը սխալ կազմաձևված է Next.js-ում՝ չհաջողելով պատշաճ կերպով փոխանցել օգտվողի վավերացման նշանները [S2] տվյալների բազա:
- Մշակողները պատահաբար օգտագործում են
service_roleբանալին հաճախորդի կողմից տեղադրված կոդի մեջ, որը շրջանցում է բոլոր RLS քաղաքականությունները [S1]:
Բետոնե ամրացումներ
- Միացնել RLS: Համոզվեք, որ տողերի մակարդակի անվտանգությունը միացված է ձեր Supabase տվյալների բազայի [S1] յուրաքանչյուր աղյուսակի համար:
- Սահմանեք քաղաքականություն. Ստեղծեք հատուկ Postgres քաղաքականություն
SELECT,INSERT,UPDATEևUPDATEևDELETEգործողությունների համար՝ սահմանափակելու համար օգտագործողի մուտքը UID-ի հիման վրա: [S1]. - Օգտագործեք SSR Հաճախորդներ. Իրականացրեք
@supabase/ssrփաթեթը՝ Next.js-ում հաճախորդներ ստեղծելու համար, որոնք ճիշտ կառավարում են սերվերի կողմից վավերացումը և նիստի կայունությունը [S2]:
Ինչպես է FixVibe-ն փորձարկում դրա համար
FixVibe-ն արդեն ծածկում է դա՝ տեղակայված հավելվածների և ռեպո ստուգումների միջոցով: Պասիվ baas.supabase-rls մոդուլը հայտնաբերում է Supabase URL-ը և անանուն բանալիների զույգերը միևնույն ծագման JavaScript փաթեթներից, խնդրում է PostgREST-ին հրապարակային աղյուսակի մետատվյալները և կատարում է միայն կարդալու սահմանափակ ընտրանքներ՝ հաստատելու անանուն տվյալների բացահայտումը հաճախորդի տվյալների փոփոխման համար: Repo-ի սկանավորումները նաև գործարկում են repo.supabase.missing-rls՝ նշելու SQL միգրացիաները, որոնք ստեղծում են հանրային աղյուսակներ՝ առանց ENABLE ROW LEVEL SECURITY-ի, և գաղտնի սկանավորումները փնտրում են ծառայողական դերի բանալիների բացահայտում նախքան այն բրաուզերի հասնելը:
