FixVibe
Covered by FixVibehigh

Next.js + Supabase დაცვა: მწკრივის დონის უსაფრთხოების (RLS) შემოვლითი გზების პრევენცია

Next.js-ით და Supabase-ით აგებული აპლიკაციები ხშირად ეყრდნობა მწკრივის დონის უსაფრთხოებას (RLS) მონაცემთა დასაცავად. RLS-ის ჩართვამ ან Supabase კლიენტის არასწორ კონფიგურაციამ შეიძლება გამოიწვიოს მონაცემთა ბაზის სრული ექსპოზიცია, რაც საშუალებას მისცემს არაავტორიზებულ მომხმარებლებს წაიკითხონ ან შეცვალონ მგრძნობიარე ჩანაწერები.

CWE-284

გავლენა

თავდამსხმელებს შეუძლიათ გვერდის ავლით აპლიკაციის ლოგიკა წაიკითხონ, განაახლონ ან წაშალონ ჩანაწერები მონაცემთა ბაზაში, თუ მწკრივის დონის უსაფრთხოება (RLS) სათანადოდ არ არის დანერგილი [S1]. ეს ხშირად იწვევს პერსონალური იდენტიფიცირებადი ინფორმაციის (PII) ან აპლიკაციის მგრძნობიარე მონაცემების გამოვლენას მომხმარებლებისთვის, რომლებსაც აქვთ წვდომა მხოლოდ საჯარო ანონიმურ API გასაღებზე.

ძირეული მიზეზი

Supabase იყენებს Postgres Row Level Security მონაცემთა ბაზის დონეზე წვდომის სამართავად, რაც ფუნდამენტურია [S1] მონაცემთა დასაცავად. Next.js გარემოში, დეველოპერებმა უნდა შექმნან Supabase კლიენტი, რომელიც სწორად ამუშავებს ქუქი ფაილებს და სესიებს, რათა შეინარჩუნოს უსაფრთხოება სერვერის მხრიდან [S2] რენდერის დროს. დაუცველობა, როგორც წესი, ჩნდება, როდესაც:

  • ცხრილები იქმნება RLS ჩართულის გარეშე, რაც მათ ხელმისაწვდომს ხდის საჯარო ანონ კლავიშის [S1]-ის მეშვეობით.
  • Supabase კლიენტი არასწორად არის კონფიგურირებული Next.js-ში, ვერ ახერხებს მომხმარებლის ავთენტიფიკაციის ნიშნების სწორად გადაცემას მონაცემთა ბაზაში [S2].
  • დეველოპერები შემთხვევით იყენებენ service_role გასაღებს კლიენტის მხარეს კოდით, რომელიც გვერდს უვლის ყველა RLS პოლიტიკას [S1].

ბეტონის შესწორებები

  • ჩართეთ RLS: დარწმუნდით, რომ მწკრივის დონის უსაფრთხოება ჩართულია ყველა ცხრილისთვის თქვენს Supabase მონაცემთა ბაზაში [S1].
  • პოლიტიკის განსაზღვრა: შექმენით სპეციალური Postgres პოლიტიკები SELECT, INSERT, UPDATE და UPDATE და DELETE ოპერაციებისთვის, მომხმარებლის წვდომის შეზღუდვისთვის UID-ზე დაყრდნობით [S1].
  • გამოიყენეთ SSR კლიენტები: დანერგეთ @supabase/ssr პაკეტი Next.js-ში კლიენტების შესაქმნელად, რომლებიც სწორად მართავენ სერვერის ავთენტიფიკაციას და სესიის მდგრადობას [S2].

როგორ ამოწმებს მას FixVibe

FixVibe უკვე ფარავს ამას განლაგებული აპისა და რეპო შემოწმების მეშვეობით. პასიური baas.supabase-rls მოდული აღმოაჩენს Supabase URL-ს და ანონ-გასაღების წყვილებს იმავე წარმოშობის JavaScript-ის პაკეტებიდან, სთხოვს PostgREST-ს საჯარო ცხრილის მეტამონაცემებს და ახორციელებს შეზღუდული მხოლოდ წაკითხვის არჩევანს, რათა დაადასტუროს ანონიმური მონაცემების ექსპოზიცია კლიენტის მუტაციის გარეშე. რეპოს სკანირება ასევე აწარმოებს repo.supabase.missing-rls-ს SQL მიგრაციების მონიშვნაზე, რომლებიც ქმნიან საჯარო ცხრილებს ENABLE ROW LEVEL SECURITY-ის გარეშე, ხოლო საიდუმლო სკანირება ეძებს სერვისის როლის კლავიშს, სანამ ის ბრაუზერამდე მიაღწევს.