Әсер
Қатар деңгейінің қауіпсіздігі (RLS) [S1] дұрыс орындалмаса, шабуылдаушылар дерекқордағы жазбаларды оқу, жаңарту немесе жою үшін қолданба логикасын айналып өтуі мүмкін. Бұл көбінесе жалпыға ортақ анонимді API кілтіне рұқсаты бар пайдаланушыларға жеке сәйкестендірілетін ақпараттың (PII) немесе құпия қолданба деректерінің ашылуына әкеледі.
Негізгі себеп
Supabase [S1] деректерін қорғау үшін негізгі болып табылатын дерекқор деңгейінде деректерге қол жеткізуді басқару үшін Postgres Row Level Security пайдаланады. Next.js ортасында әзірлеушілер [S2] серверлік көрсету кезінде қауіпсіздікті сақтау үшін cookie файлдары мен сеанстарды дұрыс өңдейтін Supabase клиентін жасауы керек. Әдетте осалдықтар келесі жағдайларда пайда болады:
- Кестелер RLS қосылмай жасалады, бұл оларға [S1] жалпы анон кілті арқылы қол жетімді етеді.
- Supabase клиенті Next.js ішінде қате конфигурацияланған, пайдаланушының аутентификация таңбалауыштарын [S2] дерекқорына дұрыс өткізе алмаған.
- Әзірлеушілер клиенттік кодта кездейсоқ
service_roleкілтін пайдаланады, ол RLS барлық [S1] саясаттарын айналып өтеді.
Бетонды түзетулер
- RLS қосу: Supabase [S1] дерекқорындағы әрбір кесте үшін жол деңгейінің қауіпсіздігі қосылғанына көз жеткізіңіз.
- Саясаттарды анықтау: U идентификаторы негізінде пайдаланушының қатынасын шектеу үшін
SELECT,INSERT,UPDATEжәнеDELETEүшін арнайы Postgres саясаттарын жасаңыз. [S1]. - SSR клиенттерін пайдаланыңыз:
@supabase/ssrбумасын Next.js жүйесінде серверлік аутентификацияны және [S2] сеансының тұрақтылығын дұрыс басқаратын клиенттерді жасау үшін орындаңыз.
FixVibe оны қалай тексереді
FixVibe мұны қазірдің өзінде орналастырылған қолданба және репо тексерулері арқылы қамтиды. Пассивті baas.supabase-rls модулі Supabase URL мекенжайын және бір шыққан JavaScript бумаларынан анон-кілт жұптарын табады, жалпы кесте метадеректерін PostgREST сұрайды және тұтынушы деректерін мутациясыз анонимді деректер экспозициясын растау үшін шектеулі тек оқуға арналған таңдауларды орындайды. Сондай-ақ, репо сканерлеулері ENABLE ROW LEVEL SECURITY жоқ жалпыға ортақ кестелерді жасайтын SQL көшірулерін белгілеу үшін repo.supabase.missing-rls іске қосады және құпия сканерлеулер шолғышқа жеткенге дейін қызмет рөлі кілтінің экспозициясын іздейді.
