FixVibe
Covered by FixVibehigh

Ապահովում է Next.js + Supabase. կանխում է տողերի մակարդակի անվտանգության (RLS) շրջանցումները

Next.js և Supabase-ով կառուցված հավելվածները հաճախ հիմնվում են տողերի մակարդակի անվտանգության վրա (RLS)՝ տվյալների պաշտպանության համար: RLS-ի միացման ձախողումը կամ Supabase հաճախորդի սխալ կազմաձևումը կարող է հանգեցնել տվյալների բազայի ամբողջական բացահայտմանը, ինչը թույլ կտա չարտոնված օգտվողներին կարդալ կամ փոփոխել զգայուն գրառումները:

CWE-284

Ազդեցություն

Հարձակվողները կարող են շրջանցել հավելվածի տրամաբանությունը տվյալների բազայում գրառումները կարդալու, թարմացնելու կամ ջնջելու համար, եթե տողերի մակարդակի անվտանգությունը (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-ի, և գաղտնի սկանավորումները փնտրում են ծառայողական դերի բանալիների բացահայտում նախքան այն բրաուզերի հասնելը: