ആഘാതം
റോ ലെവൽ സെക്യൂരിറ്റി (RLS) നടപ്പിലാക്കുന്നതിലെ പരാജയം, RLS, Supabase ഡാറ്റാബേസിൽ നിന്നുള്ള ഡാറ്റ അന്വേഷിക്കാൻ അനധികൃത ആക്രമണകാരികളെ അനുവദിക്കുന്നു. Next.js ആപ്ലിക്കേഷനുകൾ സാധാരണയായി ക്ലയൻ്റ്-സൈഡ് കോഡിലെ Supabase anon കീ തുറന്നുകാട്ടുന്നതിനാൽ, ആക്രമണകാരിക്ക് ഈ കീ ഉപയോഗിച്ച് നേരിട്ട് REST ZXCVFIXVIBETOKEN7ZXCEV കോളുകൾ ആക്സസ് ചെയ്യാൻ കഴിയും. സെൻസിറ്റീവ് ഉപയോക്തൃ വിവരങ്ങൾ [S2].
മൂലകാരണം
ഡിഫോൾട്ടായി, Supabase-ലെ Postgres ടേബിളുകൾക്ക് പൊതു ആക്സസ് തടയാൻ [S1] റോ ലെവൽ സെക്യൂരിറ്റിയുടെ വ്യക്തമായ സജീവമാക്കൽ ആവശ്യമാണ്. ഒരു ഡവലപ്പർ ഒരു ടേബിൾ സൃഷ്ടിക്കുകയും എന്നാൽ RLS പ്രവർത്തനക്ഷമമാക്കാൻ മറക്കുകയോ നിയന്ത്രിത നയങ്ങൾ നിർവചിക്കുന്നതിൽ പരാജയപ്പെടുകയോ ചെയ്യുമ്പോൾ, പ്രോജക്റ്റിൻ്റെ anon കീ [S1] കൈവശമുള്ള ആർക്കും ഡാറ്റാബേസ് ഡാറ്റ വെളിപ്പെടുത്തിയേക്കാം. Next.js ആപ്ലിക്കേഷനുകളിൽ, സെർവർ-സൈഡ് റെൻഡറിംഗും ക്ലയൻ്റ്-സൈഡ് ലഭ്യമാക്കലും ശ്രദ്ധാപൂർവ്വം Supabase ക്ലയൻ്റ് സജ്ജീകരണം ആവശ്യമാണ്, അതിനാൽ ആധികാരികതയുള്ള ഉപയോക്തൃ സന്ദർഭം ഡാറ്റാബേസ് ലെയറിലേക്ക് [S2] എത്തുന്നു.
കോൺക്രീറ്റ് ഫിക്സുകൾ
- RLS പ്രവർത്തനക്ഷമമാക്കുക: ആപ്പ് ഡാറ്റ [S1] സംഭരിക്കുന്ന എല്ലാ പൊതു ടേബിളിനും
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-ഉം പബ്ലിക് അനോൺ കീയും ഒരേ ഉത്ഭവമുള്ള ജാവാസ്ക്രിപ്റ്റ് ബണ്ടിലുകളിൽ നിന്ന് കണ്ടെത്തുന്നു, പൊതു ടേബിൾ മെറ്റാഡാറ്റയ്ക്കായി PostgREST-നോട് ആവശ്യപ്പെടുന്നു, കൂടാതെ ഉപയോക്തൃ സെഷനില്ലാതെ ഡാറ്റ വെളിപ്പെടുത്തിയിട്ടുണ്ടോ എന്ന് സ്ഥിരീകരിക്കാൻ പരിമിതമായ വായന-മാത്രം തിരഞ്ഞെടുക്കാൻ ശ്രമിക്കുന്നു. ഇത് സേവന-റോൾ ക്രെഡൻഷ്യലുകൾ തിരുകുകയോ അപ്ഡേറ്റ് ചെയ്യുകയോ ഇല്ലാതാക്കുകയോ ഉപയോഗിക്കുകയോ ചെയ്യുന്നില്ല. ENABLE ROW LEVEL SECURITY ഇല്ലാതെ പൊതു ടേബിളുകൾ സൃഷ്ടിക്കുന്ന SQL മൈഗ്രേഷനുകളെ ഫ്ലാഗ് ചെയ്യുന്ന repo.supabase.missing-rls വഴിയും റിപ്പോ സ്കാനുകൾക്ക് ഇത് നേരത്തെ മനസ്സിലാക്കാൻ കഴിയും.
