FixVibe
Covered by FixVibehigh

Алга болсон Supabase эгнээний түвшний хамгаалалт (RLS)-ээр дамжуулан зөвшөөрөлгүй өгөгдөлд хандах

Supabase-д тулгуурласан програмууд нь өгөгдлийн аюулгүй байдал нь мөрийн түвшний хамгаалалт (RLS) дээр тулгуурладаг. Хэрэв RLS-г тодорхой идэвхжүүлээгүй, бодлогоор тохируулаагүй бол нийтийн нэрээ нууцалсан түлхүүр бүхий хэрэглэгч бүх мэдээллийн сангийн өгөгдлийг унших, шинэчлэх эсвэл устгах боломжтой. Энэ нь Next.js орчинд Supabase үйлчлүүлэгчийг ихэвчлэн нийтийн API түлхүүрээр эхлүүлдэг.

CWE-284

Нөлөөлөл

Мөрийн түвшний хамгаалалтыг (RLS) хэрэгжүүлээгүй нь танигдаагүй халдагчдад Supabase мэдээллийн сангаас олон нийтийн хүснэгтүүд [S1] анон хилээр гарах үед мэдээлэл авах боломжийг олгодог. Next.js программууд нь ихэвчлэн Supabase anon түлхүүрийг үйлчлүүлэгчийн кодонд ил гаргадаг тул халдагчид энэ түлхүүрийг ашиглан мэдээллийн сан руу шууд REST API дуудлага хийх, хэрэглэгчийн мэдээллийн санд нэвтрэх, хэрэглэгчийн мэдээлэлд нэвтрэх боломжтой. [S2].

Үндсэн шалтгаан

Өгөгдмөл байдлаар, Supabase дахь Postgres хүснэгтүүд нь [S1] олон нийтэд хандахаас сэргийлэхийн тулд Row Level Security-г тодорхой идэвхжүүлэхийг шаарддаг. Хөгжүүлэгч хүснэгт үүсгэсэн боловч RLS-г идэвхжүүлэхээ мартсан эсвэл хязгаарлалтын бодлогыг тодорхойлж чадаагүй тохиолдолд өгөгдлийн сан нь төслийн anon [S1] түлхүүрийг эзэмшдэг хэнд ч өгөгдлийг ил болгож болзошгүй. Next.js программуудад сервер талын рэндэрлэх болон клиент талаас татах нь Supabase үйлчлүүлэгчийн болгоомжтой тохиргоог шаарддаг тул баталгаажуулсан хэрэглэгчийн контекст [S2] мэдээллийн сангийн давхаргад хүрдэг.

Бетон засвар

  • RLS-г идэвхжүүлэх: ALTER TABLE "your_table_name" ENABLE ROW LEVEL SECURITY; програмын өгөгдлийг хадгалдаг 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-ээр дамжуулан ажиллуулдаг. Сканнер нь ижил гарал үүсэлтэй JavaScript багцуудаас Supabase төслийн URL болон нийтийн анон түлхүүрийг олж, PostgREST-ээс нийтийн хүснэгтийн мета өгөгдлийг асууж, хэрэглэгчийн сессгүйгээр өгөгдөл ил гарсан эсэхийг баталгаажуулахын тулд зөвхөн унших боломжтой хязгаарлагдмал сонголтыг оролддог. Энэ нь үйлчилгээний үүрэг бүхий итгэмжлэлүүдийг оруулах, шинэчлэх, устгах, ашиглахгүй. Репо сканнер нь ENABLE ROW LEVEL SECURITYгүйгээр нийтийн хүснэгт үүсгэдэг SQL шилжилтийг тэмдэглэдэг repo.supabase.missing-rls-ээр үүнийг эрт илрүүлж чадна.