מה זה קובץ ENV?
קובץ ENV (שמו המלא .env, מהמילה Environment) הוא קובץ טקסט פשוט שבו שומרים את הסודות של הפרויקט, בעיקר מפתחות API, סיסמאות וכתובות של שירותים. במקום לכתוב את הסוד בתוך הקוד עצמו, שומרים אותו בקובץ נפרד, והאפליקציה קוראת ממנו בזמן ריצה.
למה זה משנה: המפתח נשאר מחוץ לקוד, אז הוא לא נחשף לאף אחד שרואה את הקוד שלכם.
הסכנה: למה חייבים את זה
כשאפליקציה מתחברת לשירות חיצוני (נגיד OpenAI), השירות נותן לכם מפתח סודי, בדיוק כמו מפתח לבית. הבעיה: סוכן ה-AI נוטה לכתוב את המפתח בגלוי בתוך הקוד. זה כמו להשאיר את המפתח מתחת לשטיח, כל אחד שעובר, נכנס.
וברגע שדוחפים את הקוד ל-GitHub, המפתח נוסע איתו לאינטרנט הפתוח. יש בוטים שסורקים את GitHub כל היום, מוציאים את המפתח תוך כמה דקות, ומבזבזים לכם אלפי שקלים.
מפתח חשוף = כסף שנשרף. השורה התחתונה: סוד אף פעם לא נכנס לקוד.
הפתרון ב-3 צעדים
- צרו קובץ נפרד בשם .env בתיקיית הפרויקט, שם יישבו כל המפתחות.
- גרמו לקוד לקרוא את המפתחות מהקובץ הזה, במקום לכתוב אותם ישירות.
- הוסיפו את .env לקובץ .gitignore, כדי שהוא לעולם לא יעלה ל-GitHub.
הפרומפטים המדויקים לסוכן
לא צריך לעשות את זה ידנית. תכתבו לסוכן (קלוד / קורסור / כל כלי) בדיוק את שתי הבקשות האלה, אחת אחרי השנייה:
“תעביר את כל המפתחות לקובץ .env ותקרא אותם משם”
“תוסיף את .env לקובץ .gitignore”
שתי בקשות, והסוד נשאר אצלכם.
איך זה נראה: לפני ואחרי
לפני (מסוכן): המפתח כתוב בגלוי בתוך הקוד:
api_key = "sk-7f3a9c2e8b1d..."
הקובץ .env (כאן שומרים את הסוד):
API_KEY=sk-7f3a9c2e8b1d...
אחרי (בטוח): הקוד קורא את המפתח מהקובץ:
api_key = os.getenv("API_KEY")
הקובץ .gitignore (חוסם העלאה ל-GitHub):
.env
אם כבר העלית מפתח בטעות
קורה. אם המפתח כבר עלה ל-GitHub, שני דברים מיידיים:
- אפסו את המפתח (Revoke) בלוח הבקרה של השירות, וצרו אחד חדש. זה הכי חשוב: ברגע שהמפתח נחשף, הוא שרוף.
- הסירו את הקובץ מהמעקב של git בעזרת הפקודות:
git rm --cached .env
git commit -m "remove .env from tracking"
שימו לב: גם אחרי מחיקה, הקובץ עדיין נשמר בהיסטוריה של git, ולכן חובה לאפס את המפתח עצמו, לא רק למחוק את הקובץ.
שמות המשתנים בשירותים הנפוצים
| שירות | שם המשתנה הנפוץ |
|---|---|
| OpenAI | OPENAI_API_KEY |
| Anthropic (Claude) | ANTHROPIC_API_KEY |
| Google Gemini | GEMINI_API_KEY |
| Stripe | STRIPE_SECRET_KEY |
| Supabase | SUPABASE_KEY |
טיפים
- אף פעם אל תכתבו מפתח ישירות בקוד, תמיד דרך .env.
- הוסיפו את .env ל-.gitignore עוד לפני הקומיט הראשון, לא אחרי.
- צרו קובץ .env.example עם שמות המשתנים בלי הערכים, כדי שמי שמוריד את הפרויקט ידע מה צריך, בלי לחשוף סודות.
- אל תשלחו את קובץ ה-.env בוואטסאפ או במייל. אם חייבים לשתף סוד: השתמשו במנהל סודות ייעודי.
- לפני כל push, הריצו git diff וודאו שאין מפתחות בקוד.
- בענן ובפרודקשן: הגדירו את המשתנים בהגדרות השירות (Environment Variables), לא בתוך הקוד.
לינקים שימושיים
- הסרת מידע רגיש מ-GitHub: docs.github.com, removing sensitive data
- יצירת קובץ .gitignore אוטומטי: gitignore.io