تأمين تطبيقات ويب Golang باستخدام القائمة البيضاء IP

تأمين تطبيقات ويب Golang باستخدام القائمة البيضاء IP
القراء مثلك يساعدون في دعم MUO. عند إجراء عملية شراء باستخدام الروابط الموجودة على موقعنا ، فقد نربح عمولة تابعة. اقرأ أكثر.

في عالم تكنولوجيا الإنترنت الحديث ، لا يمكن المبالغة في أهمية ضمان سلامة تطبيقات الويب والخوادم مع استمرار تزايد وتيرة الهجمات الإلكترونية وتعقيدها. ولهذا السبب ، فإن الحاجة إلى اتخاذ تدابير أمنية قوية ومتطورة للأنظمة المستندة إلى الويب آخذة في الازدياد أيضًا.





اجعل فيديو اليوم قم بالتمرير للمتابعة مع المحتوى

تعد القائمة البيضاء لعناوين IP إحدى التقنيات الحديثة العديدة لتأمين تطبيقات الويب والخوادم وواجهات برمجة التطبيقات. على الرغم من أنها تستخدم فقط في بعض الحالات المحددة ، إلا أنها طريقة موصى بها لضمان تقييد الوصول إلى الموارد على الإنترنت عند الحاجة.





ما هي القائمة البيضاء IP؟

القائمة البيضاء لعناوين IP هي ببساطة ملف نوع القائمة البيضاء التي يمكن الإشارة إليها على أنها تدبير أمان الويب المستخدم لتقييد الوصول إلى شبكة أو مورد إلى عنوان IP محدد أو نطاق من عناوين IP يعتبر مصرحًا له بالوصول إلى النظام.





عند تنفيذ القائمة البيضاء لعناوين IP في نظام ما ، فإن عناوين IP التي تمت إضافتها إلى القائمة البيضاء هي فقط القادرة على الوصول إلى النظام والموارد الموجودة عليه ، بينما يتم حظر عناوين IP الأخرى.

تعد القائمة البيضاء لعناوين IP طريقة شائعة جدًا لتأمين البيانات الهامة للغاية والتي يجب أن تكون متاحة فقط لفرد أو لمجموعة معينة من الأشخاص ، ومحمية من أي محاولة قرصنة.



مثال شائع لقائمة IP البيضاء في MongoDB Atlas حيث أنت إعداد مجموعة قاعدة بيانات Mongo في السحابة وستتم مطالبتك بإضافة عنوان IP الحالي الخاص بك إلى قائمة بحيث لا يُسمح بالطلبات إلى قاعدة البيانات أو المجموعة إلا عندما تأتي من جهاز الكمبيوتر الخاص بك.

متى يجب تطبيق القائمة البيضاء لعنوان IP؟

القائمة البيضاء لعناوين IP ليست شيئًا يحتاجه كل نظام أو تطبيق. هناك حالات يوصى فيها ويكون مناسبًا لتنفيذه في تطبيق أو نظام. فيما يلي بعض الأمثلة على السيناريوهات التي يجب أن تفكر فيها في تنفيذ قائمة IP البيضاء.





  • عندما يكون التطبيق مخصصًا للاستخدام فقط من قبل مجموعة معينة من المستخدمين ، مثل الموظفين أو العملاء في شركة معينة.
  • عندما تريد أن يكون التطبيق متاحًا فقط من موقع معين ، يمكنك إدراج مجموعة من عناوين IP الخاصة بهذا الموقع في القائمة البيضاء فقط.
  • عندما يتم استخدام التطبيق لتوفير الوصول إلى المعلومات السرية أو الملكية الفكرية ، مثل قاعدة بيانات البحث أو البرامج الاحتكارية.
  • عندما يكون التطبيق خاصًا ولكن يمكن الوصول إليه عبر الإنترنت ويحتاج إلى الحماية من التهديدات الخارجية ، مثل هجمات DDoS أو إصابات البرامج الضارة.
  • عندما يتم استضافة التطبيق على منصة سحابية عامة ويحتاج إلى الحماية من الوصول غير المصرح به من قبل مستأجرين آخرين أو مستخدمي النظام الأساسي.
  • عند استخدام التطبيق في صناعة منظمة ، مثل الرعاية الصحية أو التمويل ، حيث يلزم الامتثال لمعايير الأمان.

هناك العديد من الحالات الأخرى ، ولكن بشكل أساسي ، كلما احتوى تطبيق ما على أي من الخصائص المذكورة أعلاه ، يجب أن تفكر في تنفيذ قائمة IP البيضاء.

كيفية تنفيذ القائمة البيضاء IP في Go

Go هي لغة برمجة حديثة شائعة لبناء خوادم الويب وواجهات برمجة التطبيقات مجمعة مع كل ما تحتاجه لإنشاء تطبيق ويب قياسي وآمن.





يوضح هذا القسم استخدام Go’s Gin framework لتنفيذ خادم العينة ومنطق القائمة البيضاء لعنوان 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 حقيقي و خطأ شنيع للإشارة إلى إمكانية الوصول إليها.

كيفية تثبيت أنظمة الصوت windows 10

ثم تستخدم الوظيفة إطار عمل Gin ClientIP وظيفة للحصول على عنوان 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 الخاص بالمضيف المحلي في القائمة البيضاء بين حقيقي و خطأ شنيع .

إليك نموذج طلب لإظهاره عندما لا يكون عنوان IP مدرجًا في القائمة البيضاء أو عندما يتم تعيين قيمته في القائمة البيضاء على خطأ شنيع :

  طلب اختبار عندما لا يكون عنوان IP مدرجًا في القائمة البيضاء

إليك طلب آخر عندما يكون عنوان IP موجودًا في القائمة البيضاء لعناوين IP مع تعيين قيمته على حقيقي :

  طلب اختبار عندما يكون عنوان IP مدرجًا في القائمة البيضاء