FixVibe
Covered by FixVibehigh

Next.js + Supabase സുരക്ഷിതമാക്കുന്നു: റോ ലെവൽ സെക്യൂരിറ്റി (RLS) ബൈപാസുകൾ തടയുന്നു

Next.js, Supabase എന്നിവ ഉപയോഗിച്ച് നിർമ്മിച്ച ആപ്ലിക്കേഷനുകൾ ഡാറ്റ പരിരക്ഷിക്കുന്നതിന് പലപ്പോഴും റോ ലെവൽ സെക്യൂരിറ്റിയെ (RLS) ആശ്രയിക്കുന്നു. RLS പ്രവർത്തനക്ഷമമാക്കുന്നതിൽ പരാജയപ്പെടുകയോ Supabase ക്ലയൻ്റ് തെറ്റായി കോൺഫിഗർ ചെയ്യുകയോ ചെയ്യുന്നത് പൂർണ്ണമായ ഡാറ്റാബേസ് എക്സ്പോഷറിലേക്ക് നയിച്ചേക്കാം, ഇത് സെൻസിറ്റീവ് റെക്കോർഡുകൾ വായിക്കാനോ പരിഷ്ക്കരിക്കാനോ അനധികൃത ഉപയോക്താക്കളെ അനുവദിക്കുന്നു.

CWE-284

ആഘാതം

റോ ലെവൽ സെക്യൂരിറ്റി (RLS) [S1] ശരിയായി നടപ്പിലാക്കിയില്ലെങ്കിൽ, ആക്രമണകാരികൾക്ക് ഡാറ്റാബേസിലെ റെക്കോർഡുകൾ വായിക്കാനോ അപ്‌ഡേറ്റ് ചെയ്യാനോ ഇല്ലാതാക്കാനോ ആപ്ലിക്കേഷൻ ലോജിക് മറികടക്കാൻ കഴിയും. ഇത് പലപ്പോഴും പൊതു അജ്ഞാത API കീയിലേക്ക് മാത്രം ആക്‌സസ് ഉള്ള ഉപയോക്താക്കൾക്ക് വ്യക്തിപരമായി തിരിച്ചറിയാവുന്ന വിവരങ്ങൾ (PII) അല്ലെങ്കിൽ സെൻസിറ്റീവ് ആപ്ലിക്കേഷൻ ഡാറ്റ വെളിപ്പെടുത്തുന്നതിന് കാരണമാകുന്നു.

മൂലകാരണം

Supabase ഡാറ്റാബേസ് തലത്തിൽ ഡാറ്റ ആക്‌സസ് നിയന്ത്രിക്കുന്നതിന് പോസ്റ്റ്‌ഗ്രെസ് റോ ലെവൽ സെക്യൂരിറ്റി ഉപയോഗിക്കുന്നു, ഇത് [S1] ഡാറ്റ സുരക്ഷിതമാക്കുന്നതിനുള്ള അടിസ്ഥാനമാണ്. ഒരു Next.js പരിതസ്ഥിതിയിൽ, സെർവർ-സൈഡ് റെൻഡറിംഗ് സമയത്ത് സുരക്ഷ നിലനിർത്തുന്നതിന് കുക്കികളും സെഷനുകളും ശരിയായി കൈകാര്യം ചെയ്യുന്ന ഒരു Supabase ക്ലയൻ്റ് ഡെവലപ്പർമാർ സൃഷ്ടിക്കണം. കേടുപാടുകൾ സാധാരണയായി ഉണ്ടാകുമ്പോൾ:

  • RLS പ്രവർത്തനക്ഷമമാക്കാതെ തന്നെ ടേബിളുകൾ സൃഷ്‌ടിക്കപ്പെട്ടിരിക്കുന്നു, ഇത് പബ്ലിക് അനോൺ കീ [S1] വഴി ആക്‌സസ് ചെയ്യാൻ കഴിയും.
  • Supabase ക്ലയൻ്റ് Next.js-ൽ തെറ്റായി ക്രമീകരിച്ചിരിക്കുന്നു, [S2] ഡാറ്റാബേസിലേക്ക് ഉപയോക്തൃ പ്രാമാണീകരണ ടോക്കണുകൾ ശരിയായി കൈമാറുന്നതിൽ പരാജയപ്പെടുന്നു.
  • ക്ലയൻ്റ്-സൈഡ് കോഡിൽ ഡവലപ്പർമാർ ആകസ്മികമായി service_role കീ ഉപയോഗിക്കുന്നു, ഇത് എല്ലാ RLS നയങ്ങളും [S1] മറികടക്കുന്നു.

കോൺക്രീറ്റ് ഫിക്സുകൾ

  • RLS പ്രവർത്തനക്ഷമമാക്കുക: നിങ്ങളുടെ Supabase ഡാറ്റാബേസിലെ [S1]-യിലെ എല്ലാ ടേബിളുകൾക്കും റോ ലെവൽ സുരക്ഷ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെന്ന് ഉറപ്പാക്കുക.
  • നയങ്ങൾ നിർവചിക്കുക: SELECT, INSERT, UPDATE, DELETE എന്നിവയ്‌ക്കായി പ്രത്യേക പോസ്റ്റ്‌ഗ്രെസ് നയങ്ങൾ സൃഷ്‌ടിക്കുക. [S1].
  • എസ്എസ്ആർ ക്ലയൻ്റുകൾ ഉപയോഗിക്കുക: സെർവർ സൈഡ് പ്രാമാണീകരണവും സെഷൻ പെർസിസ്റ്റൻസും ശരിയായി കൈകാര്യം ചെയ്യുന്ന Next.js-ൽ ക്ലയൻ്റുകളെ സൃഷ്ടിക്കാൻ @supabase/ssr പാക്കേജ് നടപ്പിലാക്കുക.

എങ്ങനെയാണ് FixVibe അതിനായി പരീക്ഷിക്കുന്നത്

FixVibe ഇതിനകം തന്നെ വിന്യസിച്ച ആപ്പിലൂടെയും റിപ്പോ പരിശോധനകളിലൂടെയും ഇത് കവർ ചെയ്യുന്നു. നിഷ്ക്രിയ baas.supabase-rls മൊഡ്യൂൾ Supabase URL-ഉം അനോൺ-കീ ജോഡികളും ഒരേ ഉത്ഭവമുള്ള JavaScript ബണ്ടിലുകളിൽ നിന്ന് കണ്ടെത്തുന്നു, പൊതു ടേബിൾ മെറ്റാഡാറ്റയ്‌ക്കായി PostgREST ആവശ്യപ്പെടുന്നു, കൂടാതെ അജ്ഞാത ഡാറ്റാ എക്‌സ്‌പോഷർ ഇല്ലാതെ സ്ഥിരീകരിക്കുന്നതിന് പരിമിതമായ വായന-മാത്രം തിരഞ്ഞെടുക്കലുകൾ നടത്തുന്നു. ENABLE ROW LEVEL SECURITY ഇല്ലാതെ പൊതു ടേബിളുകൾ സൃഷ്‌ടിക്കുന്ന SQL മൈഗ്രേഷനുകൾ ഫ്ലാഗുചെയ്യാൻ റിപ്പോ സ്കാനുകൾ repo.supabase.missing-rls പ്രവർത്തിപ്പിക്കുന്നു, കൂടാതെ ബ്രൗസറിൽ എത്തുന്നതിന് മുമ്പ് രഹസ്യ സ്കാനുകൾ സേവന-റോൾ കീ എക്സ്പോഷറിനായി തിരയുന്നു.