מפתח service_role חשוף באפליקציית Bolt
Bolt מייצר פרויקטים מלאים (לרוב React/Next עם Supabase) ופריסה נפוצה היא Netlify.
מה הבעיה
מפתח ה-service_role של Supabase עוקף את כל ההרשאות, כולל RLS. כשהוא מגיע לקוד שהדפדפן מוריד - הוא של כל מי שפותח DevTools.
למה זה מסוכן
זו הפרצה החמורה ביותר שאנחנו מוצאים: קריאה, שינוי ומחיקה של כל נתון במסד, בלי שום מנגנון הגנה בדרך.
איפה זה מתוקן ב-Bolt
משתני סביבה מגדירים ב-Netlify (Site settings > Environment variables) וקוראים אותם רק בצד השרת - קידומת VITE_/NEXT_PUBLIC_ הופכת ערך לציבורי.
שלבי התיקון
- סובב את המפתח מיד ב-Supabase (Settings > API > Reset service_role key) - הוא כבר נחשף
- הסר כל שימוש בו מקוד ה-client
- פעולות שדורשות אותו - העבר ל-Edge Function או לשרת, וקרא אותו שם ממשתנה סביבה
ההנחיה להדביק ב-Bolt
העתק את ההנחיה הבאה לכלי שבנה את האפליקציה (באנגלית - כך הכלים עובדים הכי טוב):
Find every place the Supabase service_role key is used in client-side code, move those operations to a server-side Edge Function that reads the key from an environment variable, and never ship the key to the browser. I will rotate the key myself.
איך מוודאים שהתיקון עבד
סריקה חוזרת סורקת את ה-JavaScript המוגש ומוודאת שהמפתח החדש לא מופיע בו.
עוד בנושא
בדיקה חינם
רוצה לדעת אם האפליקציה שלך חשופה? סרוק בחינם ב-30 שניות וקבל ציון אבטחה + הוראות תיקון.