האם האפליקציה שבניתם עם בינה מלאכותית חושפת מפתחות API?
אפליקציות שנבנו עם Lovable, Bolt, v0, Cursor או Replit פונות לא פעם ל-OpenAI, ל-Stripe או ל-Supabase ישירות מהדפדפן. כשזה קורה, המפתח הסודי נשלח בתוך קוד ה-JavaScript שכל מבקר מוריד, וכל אחד יכול להעתיק אותו, להריץ לכם חשבון או להגיע לנתונים שלכם. הזינו את כתובת האתר: נקרא את העמוד הראשי ואת קבצי הקוד שהוא טוען, ונגיד לכם אילו מפתחות סודיים חשופים. בחינם, בלי הרשמה, פחות מדקה.
כדאי לדעת
מצאתם מפתח חשוף. מה עושים?
קודם כול מבטלים את המפתח אצל הספק ויוצרים חדש. למחוק אותו מהקוד לא מספיק, כי הגרסה הישנה כבר הורדה. אחר כך מעבירים את הפעולה שצריכה אותו לצד השרת: Supabase Edge Function, נתיב API ב-Next.js או פונקציות השרת של הפלטפורמה שלכם, ושומרים את המפתח במשתנה סביבה שקיים רק בשרת.
איך המפתח הגיע לדפדפן?
כלי הבנייה מכניסים בכוונה חלק ממשתני הסביבה לקוד שנשלח לדפדפן: ב-Vite, שעליו בנויות אפליקציות רבות של Lovable ו-Bolt, כל משתנה שמתחיל ב-VITE_, וב-Next.js כל משתנה שמתחיל ב-NEXT_PUBLIC_. מפתח סודי בשם כזה נשלח לכל מבקר.
גם המפתח הציבורי (anon) של Supabase הוא דליפה?
לא. המפתח הציבורי נועד להיות בדפדפן, ומה שמגן על הנתונים הוא Row Level Security בכל טבלה. מפתח ה-service_role עוקף את ההגנה הזו, ואותו הבדיקה מחפשת.
אתם שומרים את המפתח?
לא. התוצאה מציינת רק של איזה ספק המפתח, המפתח עצמו לא מוצג, והתוצאה נמחקת אחרי 30 דקות.
מה הבדיקה בודקת
- מפתחות API של OpenAI ושל Anthropic
- מפתח service_role של Supabase ומפתחות sb_secret_ החדשים. המפתח הציבורי (anon או publishable) נועד להיות בדפדפן, ולכן לא מדווח
- מפתחות סודיים ומוגבלים של Stripe (sk_live_, rk_live_)
- מפתחות גישה של AWS, טוקנים של GitHub, Slack, SendGrid, Groq, Hugging Face ו-Replicate, ומפתחות פרטיים (private key)
הבדיקה קוראת את העמוד הראשי ואת קבצי הקוד שהוא טוען מהדומיין שלכם (עד 20). היא לא רואה קוד שנטען רק בעמודים אחרים, רק אחרי התחברות או מדומיין אחר, וגם לא מפתחות שנמצאים בשרת, שם המקום הנכון שלהם. היא לא בודקת את הרשאות מסד הנתונים (למשל טבלאות Supabase בלי Row Level Security). תוצאה נקייה אומרת שלא מצאנו מפתח מוכר במה שקראנו, ולא שהאפליקציה מאובטחת.