FixVibe
Covered by FixVibehigh

Next.js + Supabaseን በማስጠበቅ ላይ፡ የረድፍ ደረጃ ደህንነትን መከላከል (RLS) ማለፍ

በNext.js እና Supabase የተገነቡ አፕሊኬሽኖች ውሂብን ለመጠበቅ በረድፍ ደረጃ ደህንነት (RLS) ላይ ይተማመናሉ። RLSን አለማንቃት ወይም የSupabase ደንበኛን በተሳሳተ መንገድ ማዋቀር ወደ ሙሉ የውሂብ ጎታ መጋለጥ ሊያመራ ስለሚችል ያልተፈቀደላቸው ተጠቃሚዎች ስሱ መዝገቦችን እንዲያነቡ ወይም እንዲቀይሩ ያስችላቸዋል።

CWE-284

# ተጽዕኖ የረድፍ ደረጃ ደህንነት (RLS) በትክክል ካልተተገበረ አጥቂዎች በመረጃ ቋቱ ውስጥ ያሉትን መዝገቦች ለማንበብ፣ ለማዘመን ወይም ለመሰረዝ የመተግበሪያ አመክንዮ ማለፍ ይችላሉ። ይህ ብዙ ጊዜ በግል የሚለይ መረጃ (PII) ወይም ሚስጥራዊነት ያለው የመተግበሪያ ውሂብ ለሕዝብ የማይታወቁ የAPI ቁልፍ መዳረሻ ላላቸው ተጠቃሚዎች መጋለጥን ያስከትላል።

የስር መንስኤ

Supabase የውሂብ መዳረሻን በመረጃ ቋት ደረጃ ለማስተዳደር የ Postgres Row Level ደህንነትን ይጠቀማል፣ይህም መረጃን [S1] ለመጠበቅ መሰረታዊ ነው። በNext.js አካባቢ፣ ገንቢዎች የSupabase ደንበኛ መፍጠር አለባቸው ከአገልጋይ ወገን [S2]። ተጋላጭነቶች ብዙውን ጊዜ የሚነሱት በሚከተለው ጊዜ ነው-

  • ሰንጠረዦች የሚፈጠሩት RLS ሳይነቁ ነው፣ይህም በህዝብ አኖን ቁልፍ [S1] በኩል ተደራሽ ያደርጋቸዋል።
  • የSupabase ደንበኛ በNext.js ውስጥ በተሳሳተ መንገድ ተዋቅሯል፣ የተጠቃሚ የማረጋገጫ ቶከኖችን ወደ ዳታቤዝ [S2] በትክክል ማስተላለፍ አልቻለም።
  • ገንቢዎች በአጋጣሚ የservice_role ቁልፍን በደንበኛ ወገን ኮድ ይጠቀማሉ፣ይህም ሁሉንም የRLS ፖሊሲዎች [S1]ን ያልፋል።

ኮንክሪት ጥገናዎች

  • RLSን አንቃ፡ በየእርስዎ Supabase ጎታ [S1] ውስጥ ላለው ሠንጠረዥ የረድፍ ደረጃ ደህንነት መንቃቱን ያረጋግጡ።
  • መመሪያዎችን ይግለጹ፡ በተጠቃሚው ላይ የተመሰረተ መዳረሻን ለመገደብ ለSELECTINSERTUPDATE እና DELETE ስራዎች የተወሰኑ የፖስትግሬስ ፖሊሲዎችን ይፍጠሩ [S1].
  • የኤስኤስአር ደንበኞችን ተጠቀም፡ በNext.js ውስጥ ደንበኞችን ለመፍጠር የአገልጋይ ወገን ማረጋገጫ እና የክፍለ ጊዜ ጽናት [S2]ን ይተግብሩ።

FixVibe እንዴት እንደሚፈትሽ

FixVibe ይህንን አስቀድሞ በተሰማሩ አፕ እና በሪፖ ቼኮች ይሸፍናል። ተገብሮ baas.supabase-rls ሞጁል Supabase URL እና ቁልፍ ያልሆኑ ጥንዶች ከተመሳሳይ መነሻ ጃቫስክሪፕት ጥቅሎችን ያገኛል፣PostgREST ለህዝብ ሠንጠረዥ ሜታዳታ ይጠይቃል እና የደንበኛ ውሂብን ሳይቀይሩ ማንነታቸው ያልታወቀ የውሂብ መጋለጥን ለማረጋገጥ የተገደበ ንባብ ብቻ ምርጫዎችን ያደርጋል። ሬፖ ስካን እንዲሁ repo.supabase.missing-rls የህዝብ ጠረጴዛዎችን ያለ ENABLE ROW LEVEL SECURITY የሚፈጥሩ የSQL ፍልሰትን ለመጠቆም ያሂዳል እና ሚስጥራዊ ስካን ወደ አሳሹ ከመድረሱ በፊት የአገልግሎት ሚና ቁልፍ መጋለጥን ይፈልጋል።