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].
  • এসএসআর ক্লায়েন্ট ব্যবহার করুন: Next.js-এ ক্লায়েন্ট তৈরি করতে @supabase/ssr প্যাকেজটি বাস্তবায়ন করুন যা সার্ভার-সাইড প্রমাণীকরণ এবং সেশনের অধ্যবসায় [S2] সঠিকভাবে পরিচালনা করে।

কিভাবে FixVibe এর জন্য পরীক্ষা করে

FixVibe ইতিমধ্যেই ডিপ্লোয়েড-অ্যাপ এবং রেপো চেকের মাধ্যমে এটি কভার করে। প্যাসিভ baas.supabase-rls মডিউল একই-অরিজিন জাভাস্ক্রিপ্ট বান্ডেল থেকে Supabase URL এবং anon-কী জোড়া আবিষ্কার করে, PostgREST-কে সর্বজনীন টেবিল মেটাডেটা জিজ্ঞাসা করে, এবং বেনামী ডেটা মিউটিং গ্রাহকের ডেটা এক্সপোজার নিশ্চিত করতে সীমিত পঠন-পাঠন নির্বাচন করে। রেপো স্ক্যানগুলিও repo.supabase.missing-rls চালায় SQL মাইগ্রেশনগুলিকে পতাকাঙ্কিত করতে যা ENABLE ROW LEVEL SECURITY ছাড়াই পাবলিক টেবিল তৈরি করে এবং ব্রাউজারে পৌঁছানোর আগে গোপন স্ক্যানগুলি পরিষেবা-ভূমিকা কী এক্সপোজারের সন্ধান করে৷