გავლენა
თავდამსხმელებს შეუძლიათ გვერდის ავლით აპლიკაციის ლოგიკა წაიკითხონ, განაახლონ ან წაშალონ ჩანაწერები მონაცემთა ბაზაში, თუ მწკრივის დონის უსაფრთხოება (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-ის გარეშე, ხოლო საიდუმლო სკანირება ეძებს სერვისის როლის კლავიშს, სანამ ის ბრაუზერამდე მიაღწევს.
