DanLevy.net

הגנה על הטוקנים, מפתחות ה-API והסודות שלך

ציבורי? פרטי? מה?

Hero image for הגנה על הטוקנים, מפתחות ה-API והסודות שלך

מתי להגן על הטוקנים שלך?

אבטחת מפתחות API וטוקנים היא קריטית ביותר!

טעות אחת עלולה להוביל לאובדן שליטה על השרת והנתונים שלך להאקרים!

לא אמור להיות כל כך קשה לקבוע אם טוקן מסוים חייב להיות מוסתר – אפילו על סמך תיעוד רשמי!

לעתים קרובות זה מחמיר בגלל מרק המונחים הקשורים שתפגוש: טוקנים, מפתחות, אישורים, סודות, פרטיים ו_ציבוריים_.

בוא נמסגר מחדש את זה בין סודי ללא-סודי.


🔒 מפתחות סודיים

** ‼️ חשוב:** מפתחות סודיים חייבים להיות מתעלמים על ידי Git וגם מושמטים מכל קוד דפדפן. כיצד להשתמש ב-dotenv


איך תדע מתי אתה מתמודד עם מפתח סודי?


👍 כלל אצבע: שרתים שמחזירים שגיאות CORS חסרים תמיכת דפדפן. זה מצביע חזק על כך שאתה חייב לפרוקסי את השירות, להתייחס אליו כאילו הוא סודי.

👍 כלל אצבע: שירותים יקרים צריכים (כמעט) תמיד להיות מפרוקסיים או מוסתרים.

👍 כלל אצבע: אם אתה מבצע פעולת כתיבה (העלאת קובץ, הוספת שורה למסד נתונים), ייתכן שאתה מתמודד עם מפתחות סודיים.


שימושים ותכונות: מפתחות סודיים

רשימת משימות: טיפול בטוח במפתחות סודיים

סקירה מהירה

בצע את השלבים הבאים כדי להיפטר ממפתחות סודיים בקוד שלך:

אל תיצור קובץ .env בשרתים פרוסים. השתמש בכלי ניהול משתני הסביבה שמספק שירות האירוח שלך (למשל Heroku, Netlify, AWS EC2): לדוגמה לוח הבקרה או שורת הפקודה.

מאמר קשור: שימוש מאובטח ב-dotenv ב-NodeJS


🌍 מפתחות לא סודיים

👍 כלל אצבע: בכל פעם שמפתח חייב להישלח לדפדפן בקוד או בתוך השורה (למשל דרך תג <script src="https://my-api/?apiKey=123-abc-456">), זה בהחלט לא סודי. דוגמה נפוצה היא Google Maps.


מקרי שימוש ותכונות: מפתחות לא סודיים

✅ טיפול במפתחות לא סודיים:

זה בטוח לקודד מפתחות לא סודיים (ציבוריים) בקוד!

הקל על הניהול לטווח ארוך עם קובץ config.js משותף לאפליקציה שלך.

דוגמה:

config.js
module.exports = {
googleMapsKey: '123-abc'
};
load-map.js
const config = require('./config.js');
const key = config.googleMapsKey;
const src = `//maps.googleapis.com/maps/api/js?key=${key}`;
// ...

הערה: ישנם מקרי שימוש נוספים למשתני סביבה. כמה שלא כיסיתי: CI/CD/בדיקות, דגלי תכונה, ותצורת זמן ריצה עבור סביבות מיוחדות!