נצל את המסגרת של Go's Gin כדי לאבטח את יישומי האינטרנט שלך עם רשימת היתרים של IP.

בתחום המודרני של טכנולוגיית האינטרנט, החשיבות של הבטחת בטיחות יישומי האינטרנט ואי אפשר להפריז בשרתים שכן התדירות והתחכום של התקפות סייבר ממשיכות לְהַגבִּיר. בשל כך, הצורך באמצעי אבטחה חזקים ומתקדמים עבור מערכות מבוססות אינטרנט נמצא גם הוא במגמת עלייה.

רשימת היתרים של כתובות IP היא אחת מהטכניקות המודרניות הרבות לאבטחת יישומי אינטרנט, שרתים וממשקי API. למרות שכן בשימוש רק במקרים מסוימים, זוהי דרך מומלצת להבטיח הגבלת גישה למשאבים באינטרנט כאשר נָחוּץ.

מה זה רישום הלבנה של IP?

רישום הלבנה של IP הוא פשוט א סוג הרשימה הלבנה שניתן להתייחס אליו כאמצעי אבטחת אינטרנט המשמש להגבלת גישה לרשת או למשאב לכתובת IP מוגדרת או לטווח של כתובות IP הנחשבות מורשות לגשת למערכת.

כאשר רשימת ההיתרים של IP מיושמת במערכת, רק כתובות ה-IP שמתווספות לרשימה הלבנה מסוגלות לגשת למערכת ולמשאבים בה, בעוד שכתובות IP אחרות חסומות.

רשימת היתרים של IP היא דרך נפוצה מאוד לאבטחת נתונים קריטיים מאוד שאמורים להיות זמינים רק לאדם בודד או לקבוצה נתונה של אנשים, ומוגנים מפני כל ניסיון פריצה.

instagram viewer

דוגמה נפוצה לרשימת היתרים של IP היא ב- MongoDB Atlas שבו אתה הגדר אשכול מסד נתונים של Mongo בענן ואתה מתבקש להוסיף את כתובת ה-IP הנוכחית שלך לרשימה כך שבקשות למסד הנתונים או לאשכול שלך מותרות רק כשהן מגיעות מהמחשב שלך.

מתי כדאי ליישם רישום הלבן של IP?

רשימת היתרים של IP היא לא משהו שכל מערכת או אפליקציה צריכה. ישנם מקרים בהם מומלץ ונכון ליישם זאת באפליקציה או במערכת. להלן כמה דוגמאות לתרחישים שבהם עליך לשקול יישום רשימת היתרים של IP.

  • כאשר האפליקציה מיועדת לשימוש על ידי קבוצת משתמשים ספציפית, כגון עובדים או לקוחות של חברה מסוימת.
  • כאשר אתה רוצה שהאפליקציה תהיה נגישה רק ממיקום מסוים, תוכל לרשום טווח של כתובות IP ספציפיות למיקום זה בלבד.
  • כאשר האפליקציה משמשת למתן גישה למידע סודי או קניין רוחני, כגון מסד נתונים מחקר או תוכנה קניינית.
  • כאשר האפליקציה פרטית אך נגישה דרך האינטרנט וצריכה להיות מוגנת מפני איומים חיצוניים, כגון התקפות DDoS או זיהומים של תוכנות זדוניות.
  • כאשר האפליקציה מתארחת בפלטפורמת ענן ציבורית וצריכה להיות מוגנת מפני גישה לא מורשית על ידי דיירים או משתמשים אחרים בפלטפורמה.
  • כאשר האפליקציה משמשת בתעשייה מוסדרת, כגון שירותי בריאות או פיננסים, שבה נדרשת עמידה בתקני אבטחה.

ישנם מקרים רבים נוספים, אך ביסודו של דבר, בכל פעם שלאפליקציה יש אחד מהמאפיינים שצוינו לעיל, עליך לשקול ליישם רשימת היתרים של IP.

כיצד ליישם את רשימת ה-IP הלבנה ב-Go

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

סעיף זה מדגים את השימוש ב-Gin Framework של Go כדי ליישם את ההיגיון לדוגמה של השרת והרשימה הלבנה של IP, שהיא פונקציית תווך. אתה יכול להתקין את המסגרת של Gin בפרויקט על ידי הפעלת הפקודה הבאה.

לך להשיג github.com/gin-gonic/gin

לאחר התקנת מסגרת ה-Gin, כעת תוכל להמשיך ליישם את תוכנת האמצע של רשימת ההיתרים של IP. אתה יכול ליצור קובץ תווך חדש בכל מקום בפרויקט שלך, בהתאם לארכיטקטורת הפרויקט שלך. להלן היישום של פונקציית התווך:

חֲבִילָה כלי ביניים

יְבוּא (
"github.com/gin-gonic/gin"
"נטו/http"
)

funcIPWhiteListMiddleware(רשימה הלבנה מַפָּה[חוּט]bool)ג'ין.HandlerFunc {
לַחֲזוֹרfunc(ג *ג'ין. הֶקשֵׁר) {
משתמש IP := ג. ClientIP()

אם רשימת הלבנה[משתמש IP] {
ג. AbortWithStatusJSON(http. סטטוס אסור, ג'ין. H{
"שְׁגִיאָה": "אינך מורשה לגשת למשאב זה!",
})
} אַחֵר {
ג. הַבָּא()
}
}
}

בקוד למעלה, ה IPWhiteListMiddleware הפונקציה מוגדרת לקבל רשימת הלבנים של כתובות IP מוגדרת כארגומנט. הרשימה הלבנה מיושמת כמבנה נתוני מפה כך שניתן להקצות בקלות ערכים של כתובות IP נָכוֹן ו שֶׁקֶר לציין את נגישותם.

לאחר מכן הפונקציה משתמשת ב-Gin framework לקוח IP פונקציה כדי לקבל את כתובת ה-IP הנוכחית של המשתמש שמנסה לבצע את הבקשה, ובודקת אם היא קיימת ברשימת הלבנים ועם נָכוֹן ערך. אם זה לא נמצא, או נמצא שיש לו ערך של שֶׁקֶר, תוכנת האמצע מבטלת את הבקשה ומחזירה שגיאה 403 (אסורה).

ניתן ליישם נקודת קצה לדוגמה לבדיקת פונקציונליות זו כדי לראות כיצד פועלת רשימת ההיתרים של IP. הקוד הבא הוא תוכנית המגדירה רשימת היתרים ומיישמת שתי נקודות קצה (אחת מוגבלת ואחת בלתי מוגבלת).

חֲבִילָה רָאשִׁי

יְבוּא (
"github.com/gin-gonic/gin"
"גו-ip-whitelist/תוכנות ביניים"
"נטו/http"
)

var IPWhitelist = מַפָּה[חוּט]bool{
"127.0.0.1": נָכוֹן,
"111.2.3.4": נָכוֹן,
"::1": נָכוֹן,
}

funcרָאשִׁי() {
נתב := ג'ין. בְּרִירַת מֶחדָל()

נתב. לקבל("/אינדקס", func(ג *ג'ין. הֶקשֵׁר) {
ג. JSON(http. סטטוס בסדר, ג'ין. H{
"הוֹדָעָה": "ברוכים הבאים לאפליקציה המאובטחת שלי!",
})
})

restrictedPage := נתב. קְבוּצָה("/")
עמוד מוגבל. שימוש (כלי ביניים. IPWhiteListMiddleware (IPWhitelist))

עמוד מוגבל. לקבל("/adminZone", func(ג *ג'ין. הֶקשֵׁר) {
ג. JSON(http. סטטוס בסדר, ג'ין. H{
"הוֹדָעָה": "נקודת הקצה הזו מאובטחת באמצעות רישום הלבנה של IP!",
})
})

נתב. לָרוּץ(":3333")
}

כאשר האפליקציה מופעלת עם לך לרוץ main.go, השרת מתחיל ביציאה 3333, ותוכל להריץ בקשות בדיקה ל- /adminZone נקודת קצה, כדי לראות כיצד פועלת התווך. אתה יכול גם להחליף את הערך של ה-IP של localhost ברשימת הלבנים בין נָכוֹן ו שֶׁקֶר.

להלן בקשה לדוגמה להראות כאשר כתובת ה-IP אינה ברשימת ההיתרים או כאשר הערך שלה ברשימת ההיתרים מוגדר ל- שֶׁקֶר:

הנה בקשה נוספת מתי כתובת ה-IP קיימת ברשימת הלבנים של ה-IP כשהערך שלה מוגדר ל נָכוֹן:

ייתכן שתקבל תגובת שגיאה 403 (אסור) אם תבדוק את התוכנית על ידי הוספת כתובת ה-IP הגנרית של localhost (127.0.0.1). כתובת ה-IP שככל הנראה תעבוד מקומית היא ::1 שהיא המקבילה ל-IPv6 של 127.0.0.1 (Ipv4). נסה להוסיף רשימת היתרים ::1 אם 127.0.0.1 מסרב לעבוד, ואתה יכול גם לנסות לרשום את IP של משתמש משתנה במסוף כדי לראות את הכתובת המדויקת בשימוש.

אבטחת יישומי אינטרנט באמצעות רישום הלבנה של IP

בעולם של היום, האבטחה של יישומי ומערכות אינטרנט היא בעלת חשיבות עליונה כאשר הטכנולוגיה ממשיכה להתקדם. רשימת היתרים של IP היא דרך פשוטה ויעילה מאוד להגביל את הגישה למשאבים באינטרנט למקורות מהימנים בלבד.

עד כה במאמר זה, הרעיון של רשימת היתרים של כתובות IP סוקר בפירוט, מתי ליישם אותו וכיצד ליישם אותו ב-Go באמצעות מסגרת Gin. מומלץ ליישם רישום הלבן של IP רק במידת הצורך כדי למנוע עלויות טכניות מיותרות.