IP Beyaz Liste Kullanarak Golang Web Uygulamalarının Güvenliğini Sağlama

IP Beyaz Liste Kullanarak Golang Web Uygulamalarının Güvenliğini Sağlama
Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma yaptığınızda, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

Modern internet teknolojisi alanında, siber saldırıların sıklığı ve karmaşıklığı artmaya devam ettikçe, web uygulamalarının ve sunucularının güvenliğini sağlamanın önemi göz ardı edilemez. Bu nedenle, web tabanlı sistemler için sağlam ve son teknoloji güvenlik önlemlerine olan ihtiyaç da artmaktadır.





GÜNÜN MAKALE VİDEOSU İÇERİK İLE DEVAM ETMEK İÇİN KAYDIRIN

IP adresini beyaz listeye alma, web uygulamalarının, sunucuların ve API'lerin güvenliğini sağlamak için kullanılan birçok modern teknikten biridir. Sadece bazı özel durumlarda kullanılsa da ihtiyaç duyulduğunda internet üzerindeki kaynaklara erişimin kısıtlanmasını sağlamak için önerilen bir yöntemdir.





iphone'um neden kısa mesaj göndermiyor?

IP Beyaz Listesi Nedir?

IP beyaz listesi basitçe bir beyaz liste türü bir ağa veya kaynağa erişimi, sisteme erişim yetkisi olduğu düşünülen tanımlanmış bir IP adresi veya IP adresleri aralığıyla kısıtlamak için kullanılan bir web güvenlik önlemi olarak adlandırılabilecek.





Bir sistemde IP beyaz listesi uygulandığında, yalnızca beyaz listeye eklenen IP adresleri sisteme ve üzerindeki kaynaklara erişebilir, diğer IP adresleri engellenir.

IP beyaz listesi, yalnızca bir kişinin veya belirli bir grup kişinin erişebilmesi ve herhangi bir bilgisayar korsanlığı girişiminden korunması gereken çok kritik verileri güvence altına almanın çok yaygın bir yoludur.



IP beyaz listesi oluşturmanın yaygın bir örneği MongoDB Atlas'tadır; burada bulutta bir Mongo veritabanı kümesi kurun ve geçerli IP adresinizi bir listeye eklemeniz istenir, böylece veritabanınıza veya kümenize yapılan isteklere yalnızca bilgisayarınızdan geldiklerinde izin verilir.

IP Beyaz Listesini Ne Zaman Uygulamalısınız?

IP beyaz listesi, her sistemin veya uygulamanın ihtiyaç duyduğu bir şey değildir. Bir uygulamada veya sistemde uygulanmasının önerildiği ve uygun olduğu durumlar vardır. Aşağıda, bir IP beyaz listesi uygulamayı düşünmeniz gereken bazı senaryo örnekleri verilmiştir.





  • Uygulamanın yalnızca belirli bir şirketin çalışanları veya müşterileri gibi belirli bir kullanıcı grubu tarafından kullanılması amaçlandığında.
  • Uygulamaya yalnızca belirli bir konumdan erişilebilmesini istediğinizde, yalnızca o konuma özgü bir dizi IP adresini beyaz listeye alabilirsiniz.
  • Uygulama, gizli bilgilere veya araştırma veri tabanı veya tescilli yazılım gibi fikri mülkiyete erişim sağlamak için kullanıldığında.
  • Uygulama özel olduğunda, ancak internet üzerinden erişilebilir olduğunda ve DDoS saldırıları veya kötü amaçlı yazılım bulaşmaları gibi dış tehditlerden korunması gerektiğinde.
  • Uygulama bir genel bulut platformunda barındırıldığında ve platformun diğer kiracıları veya kullanıcıları tarafından yetkisiz erişime karşı korunması gerektiğinde.
  • Uygulama, sağlık veya finans gibi güvenlik standartlarına uygunluğun gerekli olduğu denetime tabi bir sektörde kullanıldığında.

Daha birçok durum vardır, ancak temelde, bir uygulama yukarıda belirtilen özelliklerden herhangi birine sahip olduğunda, bir IP beyaz listesi uygulamayı düşünmelisiniz.

Go'da IP Beyaz Listesi Nasıl Uygulanır?

Go, web sunucuları oluşturmak için popüler bir modern programlama dilidir. ve standart ve güvenli bir web uygulaması oluşturmak için ihtiyacınız olan her şeyi içeren API'ler.





Bu bölüm, bir ara yazılım işlevi olan örnek sunucu ve IP beyaz listeleme mantığını uygulamak için Go'nun Gin çerçevesinin kullanımını gösterir. Aşağıdaki komutu çalıştırarak Gin çerçevesini bir projeye kurabilirsiniz.

 go get github.com/gin-gonic/gin 

Gin çerçevesini kurduktan sonra, IP beyaz listeleme ara katman yazılımını uygulamaya geçebilirsiniz. Proje mimarinize bağlı olarak, projenizin herhangi bir yerinde yeni bir ara yazılım dosyası oluşturabilirsiniz. İşte ara katman işlevinin uygulanması:

 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()
        }
    }
}

Yukarıdaki kodda, IPWhiteListAra Yazılım işlev, tanımlı bir IP adresi beyaz listesini argüman olarak kabul edecek şekilde tanımlanır. Beyaz liste, IP adreslerine kolayca aşağıdaki değerlerin atanabilmesi için bir harita veri yapısı olarak uygulanır: doğru Ve YANLIŞ erişilebilirliklerini belirtmek için.

Ardından işlev Gin çerçevesini kullanır İstemci IP'si istekte bulunmaya çalışan kullanıcının mevcut IP adresini almak için işlev görür ve beyaz listede olup olmadığını kontrol eder. doğru değer. Bulunamazsa veya değerine sahip olduğu bulunursa YANLIŞ , ara yazılım isteği iptal eder ve bir 403 hatası (Yasak) döndürür.

IP beyaz listesinin nasıl çalıştığını görmek için bu işlevselliği test etmeye yönelik örnek bir uç nokta uygulanabilir. Aşağıdaki kod, bir beyaz liste tanımlayan ve iki uç nokta (kısıtlanmış ve kısıtlanmamış) uygulayan bir programdır.

 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")
}

Uygulama ile çalıştırıldığında git main.go'yu çalıştır , sunucu 3333 numaralı bağlantı noktasında başlar ve sunucuya test istekleri çalıştırabilirsiniz. /adminZone uç nokta, ara yazılımın nasıl çalıştığını görmek için. Beyaz listedeki yerel ana bilgisayar IP'sinin değerini de arasında değiştirebilirsiniz. doğru Ve YANLIŞ .

IP adresi beyaz listede olmadığında veya beyaz listedeki değeri olarak ayarlandığında göstermek için örnek bir isteği burada bulabilirsiniz. YANLIŞ :

  IP adresinin beyaz listede olmadığı durumlar için test isteği

IP adresinin IP beyaz listesinde değeri olarak ayarlı olarak mevcut olduğu durumlar için başka bir istek: doğru :

  IP adresinin beyaz listeye eklendiğinde test isteği