Әсер
Жол деңгейі қауіпсіздігін (RLS) іске асырмау аутентификацияланбаған шабуылдаушыларға Supabase дерекқорынан жалпыға ортақ кестелер [S1] анон шекарасы арқылы ашылған кезде деректерді сұрауға мүмкіндік береді. Next.js қолданбалары әдетте клиенттік кодта Supabase anon кілтін ашатындықтан, шабуылдаушы бұл пернені дерекқорға тікелей REST API қоңырауларын жасау үшін пайдалана алады. [S2].
Негізгі себеп
Әдепкі бойынша, Supabase ішіндегі Postgres кестелері [S1] жалпы қолжетімділікті болдырмау үшін жол деңгейінің қауіпсіздігін нақты белсендіруді қажет етеді. Әзірлеуші кесте жасағанда, бірақ RLS қосуды ұмытып кетсе немесе шектеуші саясаттарды анықтай алмаса, дерекқор жобаның anon [S1] кілті бар кез келген адамға деректерді көрсетуі мүмкін. Next.js қолданбаларында серверлік көрсету және клиенттік алу да Supabase клиентті мұқият орнатуды талап етеді, осылайша аутентификацияланған пайдаланушы мәтінмәні [S2] дерекқор деңгейіне жетеді.
Бетонды түзетулер
- RLS қосу:
ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY;қолданба деректерін сақтайтын әрбір жалпы кесте үшінALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY;орындаңыз. - Саясаттарды анықтау:
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 арқылы да ертерек анықтай алады.
