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

אבטחת יישומי אינטרנט של Golang באמצעות רישום הלבנה של IP
קוראים כמוך עוזרים לתמוך ב-MUO. כאשר אתה מבצע רכישה באמצעות קישורים באתר שלנו, אנו עשויים להרוויח עמלת שותף. קרא עוד.

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





איפור של סרטון היום גלול כדי להמשיך עם התוכן

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





האם אתה יכול להשתמש במותגים שונים של ראם

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

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





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

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



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

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

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





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

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

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

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





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

 go get github.com/gin-gonic/gin 

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

 package middlewares 

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func IPWhiteListMiddleware(whitelist map[string]bool) gin.HandlerFunc {
    return func(c *gin.Context) {
        userIP := c.ClientIP()

        if !whitelist[userIP] {
            c.AbortWithStatusJSON(http.StatusForbidden, gin.H{
                "error": "You are not authorized to access this resource!",
            })
        } else {
            c.Next()
        }
    }
}

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

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

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

 package main 

import (
    "github.com/gin-gonic/gin"
    "go-ip-whitelist/middlewares"
    "net/http"
)

var IPWhitelist = map[string]bool{
    "127.0.0.1": true,
    "111.2.3.4": true,
    "::1": true,
}

func main() {
    router := gin.Default()

    router.GET("/index", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "message": "Welcome to my secure application!",
        })
    })

    restrictedPage := router.Group("/")
    restrictedPage.Use(middlewares.IPWhiteListMiddleware(IPWhitelist))

    restrictedPage.GET("/adminZone", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "message": "This endpoint is secured with IP whitelisting!",
        })
    })

    router.Run(":3333")
}

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

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

לשחזר נתונים מהכונן הקשיח המת
  בקשת בדיקה כאשר כתובת ה-IP אינה ברשימת ההיתרים

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

  בקשת בדיקה מתי כתובת ה-IP נמצאת ברשימת ההיתרים