FixVibe
Covered by FixVibehigh

Жоголгон Supabase катар деңгээлиндеги коопсуздук (RLS) аркылуу берилиштерге уруксатсыз кирүү

Supabase колдогон колдонмолордо берилиштердин коопсуздугу Row Level Security (RLS) таянат. Эгерде RLS ачык иштетилбесе жана саясаттар менен конфигурацияланбаса, ачык анонимдүү ачкычы бар каалаган колдонуучу бүт маалымат базасынан маалыматтарды окуп, жаңыртып же жок кыла алат. Бул Next.js чөйрөлөрүндө өзгөчө маанилүү, анда Supabase кардары көбүнчө ачык API ачкычы менен инициализацияланат.

CWE-284

Таасири

Саптын деңгээлинин коопсуздугу (RLS) ишке ашпай калса, аныктыгы текшерилбеген чабуулчулар Supabase маалымат базасынан жалпыга ачык таблицалар [S1] анондук чек арасы аркылуу ачыкка чыкканда маалыматтарды суроого мүмкүндүк берет. Next.js тиркемелери, адатта, Supabase anon ачкычын кардар тараптын кодунда ачып бергендиктен, чабуулчу бул ачкычты түздөн-түз REST API чалууларды жасоо үчүн колдоно алат, маалымат базасына кирүү жана колдонуучу маалыматына кирүү, [S2].

Негизги себеп

Демейки боюнча, Supabase ичиндеги Postgres таблицалары [S1] коомдук кирүүсүнө жол бербөө үчүн Row Level Security ачык активдештирүүнү талап кылат. Иштеп чыгуучу таблицаны түзүп, бирок 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 аркылуу текшерүү жүргүзөт. Сканер Supabase долбоорунун URL дарегин жана бир эле келип чыккан JavaScript таңгактарынан ачык анон ачкычын табат, PostgRESTтен ачык таблица метаберилиштерин сурайт жана колдонуучу сеансысыз берилиштердин ачыкка чыгышын ырастоо үчүн чектелген окуу үчүн гана тандоого аракет кылат. Ал кызмат ролунун эсептик дайындарын киргизбейт, жаңыртпайт, жок кылбайт же колдонбойт. Репо сканерлери муну ENABLE ROW LEVEL SECURITYсиз жалпы таблицаларды түзгөн SQL миграциясын белгилеген repo.supabase.missing-rls аркылуу да эртерээк кармай алат.