FixVibe
Covered by FixVibehigh

Next.js + Supabase təhlükəsizliyinin təmin edilməsi: Sıra Səviyyəsi Təhlükəsizliyi (RLS) Yan keçidlərinin qarşısının alınması

Next.js və Supabase ilə qurulmuş proqramlar məlumatları qorumaq üçün çox vaxt Sıra Səviyyəsi Təhlükəsizliyinə (RLS) etibar edir. RLS-nin işə salınmaması və ya Supabase müştərisinin yanlış konfiqurasiyası icazəsiz istifadəçilərə həssas qeydləri oxumağa və ya dəyişdirməyə imkan verən verilənlər bazasının tam ifşasına səbəb ola bilər.

CWE-284

Təsir

Satır Səviyyəsi Təhlükəsizliyi (RLS) [S1] düzgün şəkildə tətbiq edilmədikdə, hücumçular verilənlər bazasında qeydləri oxumaq, yeniləmək və ya silmək üçün proqram məntiqindən yan keçə bilər. Bu, çox vaxt Şəxsi Müəyyənləşdirilə bilən Məlumatın (PII) və ya həssas tətbiq məlumatlarının yalnız ictimai anonim API açarına çıxışı olan istifadəçilərə məruz qalması ilə nəticələnir.

Kök Səbəb

Supabase, [S1] məlumatlarının təhlükəsizliyi üçün əsas olan verilənlər bazası səviyyəsində məlumat girişini idarə etmək üçün Postgres Row Level Security-dən istifadə edir. Next.js mühitində tərtibatçılar [S2]-nin server tərəfində göstərilməsi zamanı təhlükəsizliyi qorumaq üçün kukiləri və sessiyaları düzgün idarə edən Supabase müştəri yaratmalıdırlar. Zəifliklər adətən aşağıdakı hallarda yaranır:

  • Cədvəllər RLS aktiv edilmədən yaradılmışdır ki, bu da onları ictimai anon açarı [S1] vasitəsilə əlçatan edir.
  • Supabase klienti Next.js-də yanlış konfiqurasiya edilib, istifadəçi autentifikasiya nişanlarını [S2] verilənlər bazasına düzgün ötürə bilmir.
  • Tərtibatçılar təsadüfən müştəri tərəfi kodunda service_role açarından istifadə edirlər ki, bu da RLS bütün [S1] siyasətlərindən yan keçir.

Beton Təmirləri

  • RLS-ni aktivləşdirin: Supabase verilənlər bazanız [S1]-də hər bir cədvəl üçün Sıra Səviyyəsi Təhlükəsizliyinin aktiv edildiyinə əmin olun.
  • Siyasətləri Müəyyən edin: İstifadəçinin UID-yə əsaslanaraq girişini məhdudlaşdırmaq üçün SELECT, INSERT, UPDATEDELETE üçün xüsusi Postgres siyasətləri yaradın [S1].
  • SSR Müştərilərindən istifadə edin: @supabase/ssr paketini Next.js-də server tərəfi autentifikasiyası və sessiya davamlılığı [S2]-ni düzgün idarə edən müştərilər yaratmaq üçün həyata keçirin.

FixVibe bunu necə sınaqdan keçirir

FixVibe artıq bunu yerləşdirilmiş proqramlar və repo yoxlamaları vasitəsilə əhatə edir. Passiv baas.supabase-rls modulu eyni mənşəli JavaScript paketlərindən Supabase URL və anon-açar cütlərini aşkar edir, PostgREST-dən ictimai cədvəl metadatasını soruşur və müştəri məlumatlarını mutasiya etmədən anonim məlumatların ifşasını təsdiqləmək üçün məhdud oxunuş seçimini həyata keçirir. Repo skanları ENABLE ROW LEVEL SECURITY olmadan ictimai cədvəllər yaradan SQL miqrasiyalarını qeyd etmək üçün repo.supabase.missing-rls-ni də işə salır və gizli skanlar brauzerə çatmazdan əvvəl xidmət rolu açarının ifşasını axtarır.