האם משתני הסביבה שלכם נחשפים לדפדפן?
מדביקים את שמות המשתנים מקובץ ה-.env, בלי הערכים, ורואים אילו מהם כלי הבנייה שולח לכל מבקר באתר, ואיזה מהם לא היה אמור להגיע לשם.
הקידומות שנשלחות לדפדפן
- NEXT_PUBLIC_Next.js
- NUXT_PUBLIC_Nuxt
- EXPO_PUBLIC_Expo
- VITE_Vite (Lovable, Bolt)
- REACT_APP_Create React App
- GATSBY_Gatsby
- PUBLIC_Astro / SvelteKit
לפי התיעוד של כל כלי. משתנה בלי קידומת כזו נשאר בשרת, ובפרויקט Vite הוא לא זמין בכלל בקוד של הדפדפן.
שאלות נפוצות
למה לא צריך להדביק את הערכים?
כי השאלה היא רק איזה שם נשלח לדפדפן, והתשובה נקבעת לפי הקידומת שלו. אם הדבקתם בטעות גם ערכים, הדף מוחק אותם מהתיבה לפני הבדיקה. כלום לא נשלח לשרת.
איך משתנה מגיע לדפדפן?
כלי הבנייה מכניס לקוד של הדפדפן כל משתנה עם קידומת ציבורית: VITE_ ב-Vite (וגם ב-Lovable וב-Bolt), NEXT_PUBLIC_ ב-Next.js, EXPO_PUBLIC_ ב-Expo. מי שפותח את כלי המפתחים בדפדפן רואה את הערך.
המפתח הציבורי (anon) של Supabase בדפדפן. זה בסדר?
כן, לשם הוא נועד, בתנאי ש-RLS פעיל על כל טבלה. מפתח service_role או secret הוא הפוך: הוא עוקף את כל ההרשאות, ואסור שיהיה בדפדפן.
מצאתי מפתח סודי עם קידומת ציבורית. מה עושים?
קודם מחליפים את המפתח אצל הספק, כי מפתח שכבר נשלח לדפדפן נחשב חשוף גם אחרי שמוחקים אותו מהקוד. אחר כך מעבירים את הקריאה שמשתמשת בו לפונקציית שרת, ונותנים לה את המפתח בלי קידומת ציבורית.
בודקים גם את ההרשאות במסד הנתונים? בודק RLS ל-Supabase.
לבדוק את זה על הפרויקט שלכם
20 דקות בוואטסאפ, ללא עלות. מספרים מה בניתם ואיפה זה נתקע, ויוצאים עם הצעד הבא.
- מבית Elya Studio
- 5.0 בגוגל
- 50+ פרויקטים של הצוות בפרודקשן