
מפתח API (API key) הוא מחרוזת סודית שמזהה את האתר או האפליקציה שלכם מול שירות חיצוני — מפות, סליקה, שליחת מיילים, בינה מלאכותית — ומאפשרת להשתמש בו על חשבונכם. מי שמשיג את המפתח יכול לרוב להשתמש בשירות בשמכם: לשלוח מיילים, לגשת לנתונים, או לצבור חיוב שתקבלו בסוף החודש. ההגנה על מפתחות API נשענת על שלושה עקרונות: המפתח לא נמצא בקוד, הוא מוגבל רק למה שהוא צריך, ויש תוכנית מה עושים כשהוא דולף.
שני סוגי מפתחות: גלויים וסודיים
| סוג | דוגמה | איפה הוא נמצא | ההגנה העיקרית |
|---|---|---|---|
| מפתח צד-לקוח | מפתח למפה שמוצגת בדפדפן | בהכרח גלוי בקוד העמוד | הגבלה לדומיין ולשירות הספציפי |
| מפתח צד-שרת | מפתח סליקה, שליחת מיילים, בינה מלאכותית | רק בשרת, אף פעם לא בדפדפן | שמירה מחוץ לקוד, הגבלת IP והרשאות |
הטעות המסוכנת ביותר היא לשים מפתח צד-שרת בקוד JavaScript שרץ בדפדפן. כל גולש יכול לפתוח את כלי המפתחים ולהעתיק אותו. אם הדפדפן צריך לבצע פעולה שדורשת מפתח סודי, הבקשה עוברת דרך השרת של האתר, והשרת הוא זה שפונה לשירות החיצוני.
להגביל כל מפתח
ההנחיות של גוגל לאבטחת מפתחות Google Maps Platform הן דוגמה טובה לעיקרון שנכון כמעט לכל שירות:
- הגבלת אפליקציה — מפתח לאתר מוגבל לכתובות האתר (HTTP referrer), מפתח לשרת מוגבל לכתובות ה-IP של השרת.
- הגבלת שירותים — המפתח מורשה רק לממשקים שהוא באמת משתמש בהם.
- מפתח נפרד לכל אפליקציה — כך דליפה של מפתח אחד לא חושפת הכול, ואפשר לבטל אותו בלי לשבור את השאר.
- מחיקת מפתחות שלא בשימוש וכיבוי שירותים שלא צריך.
גוגל מציינת במפורש שמפתח לא מוגבל עלול להשאיר אתכם אחראים כספית לשימוש לרעה. מעבר לזה, כדאי להגדיר בכל שירות שמאפשר זאת תקרת שימוש או התראת חיוב — כך דליפה מתגלה ביום הראשון ולא בחשבונית.
לשמור את המפתח מחוץ לקוד
מפתח שנכתב ישירות בקובץ קוד מגיע לכל מקום שהקוד מגיע אליו: למאגר Git, לגיבויים, למחשבים של מפתחים, ולפעמים למאגר ציבורי. הדרך הנכונה היא לשמור מפתחות בקובץ הגדרות נפרד שלא נכנס למאגר, או במשתני סביבה של השרת — והקוד רק קורא אותם. על ניהול גרסאות ומה לא נכנס למאגר כתבתי במאמר ניהול גרסאות לאתר.
גם אחרי שמחקתם מפתח מהקוד, הוא נשאר בהיסטוריה של המאגר. GitHub, למשל, מציין שסריקת הסודות שלו בודקת את כל היסטוריית ה-Git בכל הענפים, וממליץ להחליף מיד מפתח שנחשף. כלומר: מפתח שדלף מחליפים — לא רק מוחקים.
בוורדפרס
- תוספים רבים שומרים מפתחות במסד הנתונים, ומציגים אותם בהגדרות לכל מי שיש לו גישת ניהול. זו סיבה נוספת להגביל את מספר המנהלים — ראו הרשאות משתמשים בוורדפרס.
- גיבויים של האתר כוללים את המפתחות. גיבוי שנשמר במקום לא מאובטח הוא מפתח שדלף.
- כשמוסרים גישה לספק חיצוני או לעובד שעזב, בודקים גם אילו מפתחות הוא ראה ומחליפים אותם.
כשמפתח דולף
- יוצרים מפתח חדש עם אותן הגבלות, ומעדכנים את האתר.
- מבטלים את המפתח הישן — רק אחרי שהאתר עובד עם החדש.
- בודקים את השימוש בתקופה שבה המפתח היה חשוף: חיובים, בקשות חריגות, נתונים שנשלפו.
- מתקנים את הסיבה — המפתח בקוד, בגיבוי, בהודעת מייל — כדי שזה לא יקרה שוב.
שאלות נפוצות
אם מפתח המפה גלוי בכל מקרה, למה להגביל אותו?
כי בלי הגבלה, כל אחד יכול להעתיק אותו ולהשתמש בו באתר שלו — על חשבונכם. הגבלה לדומיין שלכם מונעת את זה.
כל כמה זמן צריך להחליף מפתחות?
זה תלוי בשירות ובמדיניות שלכם. תמיד מחליפים כשמפתח נחשף או כשמישהו שהייתה לו גישה עוזב. גוגל, למשל, ממליצה להחליף מפתחות של Maps בזהירות, אחרי שמעדכנים את כל האפליקציות שמשתמשות בהם.
כשאני מחבר אתר לשירותים חיצוניים, המפתחות נשמרים מחוץ לקוד, מוגבלים ומתועדים. על חיבורים כאלה: אינטגרציות ו-API, מה זה API, ואפשר לכתוב לי.
אהבתם את המאמר?


