FixVibe
Covered by FixVibehigh

Next.js + Supabase સુરક્ષિત કરવું: પંક્તિ સ્તરની સુરક્ષા (RLS) બાયપાસ અટકાવવી

Next.js અને Supabase સાથે બનેલી એપ્લીકેશનો ઘણીવાર ડેટાને સુરક્ષિત રાખવા માટે રો લેવલ સિક્યુરિટી (RLS) પર આધાર રાખે છે. RLS સક્ષમ કરવામાં નિષ્ફળતા અથવા Supabase ક્લાયંટને ખોટી રીતે ગોઠવવાથી સંપૂર્ણ ડેટાબેઝ એક્સપોઝર થઈ શકે છે, જે અનધિકૃત વપરાશકર્તાઓને સંવેદનશીલ રેકોર્ડ્સ વાંચવા અથવા સંશોધિત કરવાની મંજૂરી આપે છે.

CWE-284

અસર

જો રો લેવલ સિક્યોરિટી (RLS) [S1] યોગ્ય રીતે લાગુ કરવામાં આવી નથી, તો હુમલાખોરો ડેટાબેઝમાં રેકોર્ડ વાંચવા, અપડેટ કરવા અથવા કાઢી નાખવા માટે એપ્લિકેશન લોજીકને બાયપાસ કરી શકે છે. આ વારંવાર વ્યક્તિગત રીતે ઓળખી શકાય તેવી માહિતી (PII) અથવા સંવેદનશીલ એપ્લિકેશન ડેટાના સંપર્કમાં પરિણમે છે જેમની પાસે ફક્ત જાહેર અનામી API કીની ઍક્સેસ છે.

મૂળ કારણ

Supabase ડેટાબેઝ સ્તર પર ડેટા એક્સેસનું સંચાલન કરવા માટે પોસ્ટગ્રેસ રો લેવલ સિક્યુરિટીનો ઉપયોગ કરે છે, જે ડેટા [S1] સુરક્ષિત કરવા માટે મૂળભૂત છે. Next.js પર્યાવરણમાં, વિકાસકર્તાઓએ Supabase ક્લાયંટ બનાવવું આવશ્યક છે જે સર્વર-સાઇડ રેન્ડરિંગ [S2] દરમિયાન સુરક્ષા જાળવવા માટે કૂકીઝ અને સત્રોને યોગ્ય રીતે હેન્ડલ કરે છે. નબળાઈઓ સામાન્ય રીતે ઊભી થાય છે જ્યારે:

  • કોષ્ટકો RLS સક્ષમ કર્યા વિના બનાવવામાં આવે છે, જે તેમને જાહેર કી [S1] દ્વારા ઍક્સેસિબલ બનાવે છે.
  • Supabase ક્લાયંટ Next.js માં ખોટી રીતે ગોઠવેલ છે, ડેટાબેઝ [S2] પર વપરાશકર્તા પ્રમાણીકરણ ટોકન્સ યોગ્ય રીતે પસાર કરવામાં નિષ્ફળ રહ્યું છે.
  • ડેવલપર્સ આકસ્મિક રીતે ક્લાયન્ટ-સાઇડ કોડમાં service_role કીનો ઉપયોગ કરે છે, જે તમામ RLS નીતિઓ [S1] ને બાયપાસ કરે છે.

કોંક્રિટ ફિક્સેસ

  • RLS સક્ષમ કરો: ખાતરી કરો કે તમારા Supabase ડેટાબેઝ [S1] માં દરેક ટેબલ માટે પંક્તિ સ્તરની સુરક્ષા સક્ષમ છે.
  • નીતિઓ વ્યાખ્યાયિત કરો: SELECT, INSERT, UPDATE, અને DELETE યુઝરની ઍક્સેસને પ્રતિબંધિત કરવા પર આધારિત કામગીરી માટે ચોક્કસ પોસ્ટગ્રેસ નીતિઓ બનાવો [S1].
  • SSR ક્લાયંટનો ઉપયોગ કરો: Next.js માં ક્લાયંટ બનાવવા માટે @supabase/ssr પેકેજનો અમલ કરો કે જે સર્વર-સાઇડ પ્રમાણીકરણ અને સત્ર દ્રઢતા [S2] ને યોગ્ય રીતે સંચાલિત કરે છે.

FixVibe તેના માટે કેવી રીતે પરીક્ષણ કરે છે

FixVibe આને પહેલાથી જ ડિપ્લોય-એપ અને રેપો ચેક દ્વારા આવરી લે છે. નિષ્ક્રિય baas.supabase-rls મોડ્યુલ Supabase URL અને સમાન મૂળના JavaScript બંડલ્સમાંથી anon-key જોડીઓ શોધે છે, પોસ્ટગ્રેસ્ટને સાર્વજનિક ટેબલ મેટાડેટા માટે પૂછે છે, અને અનામી ડેટાના મ્યુઝિક એક્સપોઝર વિના ગ્રાહક ડેટાની પુષ્ટિ કરવા માટે મર્યાદિત વાંચન પસંદ કરે છે. રેપો સ્કેન ENABLE ROW LEVEL SECURITY વિના જાહેર કોષ્ટકો બનાવતા SQL સ્થાનાંતરણને ફ્લેગ કરવા માટે repo.supabase.missing-rls પણ ચલાવે છે, અને બ્રાઉઝર સુધી પહોંચે તે પહેલાં ગુપ્ત સ્કેન સર્વિસ-રોલ કી એક્સપોઝર માટે જુએ છે.