Уплыў
Няздольнасць рэалізаваць бяспеку на ўзроўні радка (RLS) дазваляе неаўтэнтыфікаваным зламыснікам запытваць даныя з базы даных Supabase, калі агульнадаступныя табліцы адкрываюцца праз ананальную мяжу [S1]. Паколькі прыкладанні Next.js звычайна раскрываюць ключ Supabase anon у кліенцкім кодзе, зламыснік можа выкарыстаць гэты ключ для прамых выклікаў REST API да базы дадзеных, абмінаючы прызначаную логіку прыкладання і атрымліваючы доступ да канфідэнцыйнай інфармацыі карыстальніка [S2].
Першапрычына
Па змаўчанні табліцы Postgres у Supabase патрабуюць відавочнай актывацыі бяспекі на ўзроўні радка, каб прадухіліць публічны доступ [S1]. Калі распрацоўшчык стварае табліцу, але забывае ўключыць RLS або не вызначае абмежавальныя палітыкі, база дадзеных можа адкрыць даныя любому, хто валодае ключом anon праекта [S1]. У праграмах Next.js рэндэрынг на баку сервера і выбарка на баку кліента таксама патрабуюць дбайнай налады кліента Supabase, каб кантэкст аўтэнтыфікаванага карыстальніка даходзіў да ўзроўню базы дадзеных [S2].
Канкрэтныя выпраўленні
- Уключыць RLS: Выканаць
ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY;для кожнай агульнадаступнай табліцы, якая захоўвае даныя праграмы [S1]. - Вызначце палітыку: Стварыце спецыфічную палітыку, якая абмяжоўвае доступ на аснове стану аўтэнтыфікацыі карыстальніка, напрыклад,
CREATE POLICY "Users can see their own data" ON your_table_name FOR SELECT USING (auth.uid() = user_id);[S1]. - Бяспечныя кліенты на баку сервера: пры выкарыстанні Next.js пакідайце кліентаў ролі сэрвісу толькі сервернымі і па-ранейшаму ўжывайце фільтры ўласнасці перад вяртаннем даных карыстальнікам [S2].
Як FixVibe правярае гэта
FixVibe ужо запускае праверку Supabase RLS толькі для чытання праз baas.supabase-rls. Сканер выяўляе URL-адрас праекта Supabase і публічны ананімны ключ з пакетаў JavaScript таго ж паходжання, запытвае ў PostgREST публічныя метададзеныя табліцы і спрабуе абмежаваны выбар толькі для чытання, каб пацвердзіць, ці адкрыты даныя без сеанса карыстальніка. Ён не ўстаўляе, не абнаўляе, не выдаляе і не выкарыстоўвае ўліковыя даныя ролі службы. Сканаванне РЭПО таксама можа выявіць гэта раней праз repo.supabase.missing-rls, які пазначае міграцыі SQL, якія ствараюць агульнадаступныя табліцы без ENABLE ROW LEVEL SECURITY.
