Sécurisation des applications Web Golang à l'aide de la liste blanche IP

Sécurisation des applications Web Golang à l'aide de la liste blanche IP
Des lecteurs comme vous aident à soutenir MUO. Lorsque vous effectuez un achat en utilisant des liens sur notre site, nous pouvons gagner une commission d'affiliation. En savoir plus.

Dans le domaine moderne de la technologie Internet, l'importance d'assurer la sécurité des applications Web et des serveurs ne peut être surestimée alors que la fréquence et la sophistication des cyberattaques continuent d'augmenter. Pour cette raison, la nécessité de mesures de sécurité robustes et de pointe pour les systèmes basés sur le Web est également en augmentation.





UTILISEZ LA VIDÉO DU JOUR FAITES DÉFILER POUR CONTINUER AVEC LE CONTENU

La liste blanche d'adresses IP est l'une des nombreuses techniques modernes de sécurisation des applications Web, des serveurs et des API. Bien qu'il ne soit utilisé que dans certains cas spécifiques, il s'agit d'un moyen recommandé d'assurer la restriction de l'accès aux ressources sur Internet en cas de besoin.





Qu'est-ce que la liste blanche IP ?

La liste blanche IP est simplement un type de liste blanche qui peut être appelé une mesure de sécurité Web utilisée pour restreindre l'accès à un réseau ou à une ressource à une adresse IP définie ou à une plage d'adresses IP considérées comme autorisées à accéder au système.





Lorsque la liste blanche IP est implémentée dans un système, seules les adresses IP ajoutées à la liste blanche peuvent accéder au système et aux ressources qu'il contient, tandis que les autres adresses IP sont bloquées.

La liste blanche IP est un moyen très courant de sécuriser des données très critiques qui ne devraient être disponibles que pour un individu ou un groupe de personnes donné, et protégées de toute tentative de piratage.



Un exemple courant de liste blanche IP est dans MongoDB Atlas où vous configurer un cluster de bases de données Mongo dans le cloud et vous êtes invité à ajouter votre adresse IP actuelle à une liste afin que les demandes adressées à votre base de données ou à votre cluster ne soient autorisées que lorsqu'elles proviennent de votre ordinateur.

Quand devez-vous implémenter la liste blanche IP ?

La liste blanche IP n'est pas quelque chose dont chaque système ou application a besoin. Il existe des cas où il est recommandé et approprié de l'implémenter dans une application ou un système. Voici quelques exemples de scénarios dans lesquels vous devriez envisager d'implémenter une liste blanche d'adresses IP.





  • Lorsque l'application est uniquement destinée à être utilisée par un groupe spécifique d'utilisateurs, tels que les employés ou les clients d'une entreprise particulière.
  • Lorsque vous souhaitez que l'application soit accessible uniquement à partir d'un emplacement spécifique, vous pouvez mettre en liste blanche une plage d'adresses IP spécifiques à cet emplacement uniquement.
  • Lorsque l'application est utilisée pour donner accès à des informations confidentielles ou à la propriété intellectuelle, telles qu'une base de données de recherche ou un logiciel propriétaire.
  • Lorsque l'application est privée mais accessible sur Internet et doit être protégée contre les menaces externes, telles que les attaques DDoS ou les infections par des logiciels malveillants.
  • Lorsque l'application est hébergée sur une plate-forme de cloud public et doit être protégée contre tout accès non autorisé par d'autres locataires ou utilisateurs de la plate-forme.
  • Lorsque l'application est utilisée dans un secteur réglementé, tel que la santé ou la finance, où la conformité aux normes de sécurité est requise.

Il existe de nombreux autres cas, mais fondamentalement, chaque fois qu'une application possède l'une des propriétés indiquées ci-dessus, vous devez envisager de mettre en place une liste blanche IP.

Comment implémenter la liste blanche IP dans Go

Go est un langage de programmation moderne populaire pour la construction de serveurs Web et des API regroupées avec tout ce dont vous avez besoin pour créer une application Web standard et sécurisée.





Cette section illustre l'utilisation du framework Gin de Go pour implémenter l'exemple de serveur et la logique de liste blanche IP qui est une fonction middleware. Vous pouvez installer le framework Gin dans un projet en exécutant la commande suivante.

 go get github.com/gin-gonic/gin 

Après avoir installé le framework Gin, vous pouvez maintenant implémenter le middleware de liste blanche IP. Vous pouvez créer un nouveau fichier middleware n'importe où dans votre projet, en fonction de l'architecture de votre projet. Voici l'implémentation de la fonction middleware :

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

Dans le code ci-dessus, le IPWhiteListMiddleware La fonction est définie pour accepter une liste blanche d'adresses IP définie comme argument. La liste blanche est implémentée sous la forme d'une structure de données cartographiques afin que les adresses IP puissent facilement se voir attribuer des valeurs de vrai et FAUX pour indiquer leur accessibilité.

Ensuite, la fonction utilise le framework Gin ClientIP fonction pour obtenir l'adresse IP actuelle de l'utilisateur essayant de faire la demande, et vérifie si elle est présente dans la liste blanche et avec un vrai valeur. S'il n'est pas trouvé, ou s'il a une valeur de FAUX , le middleware abandonne la requête et renvoie une erreur 403 (Interdit).

Un exemple de point de terminaison pour tester cette fonctionnalité peut être implémenté pour voir comment fonctionne la liste blanche IP. Le code suivant est un programme qui définit une liste blanche et implémente deux points de terminaison (un restreint et un non restreint).

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

Lorsque l'application est exécutée avec allez courir main.go , le serveur démarre sur le port 3333 et vous pouvez exécuter des demandes de test sur le /zoneadmin endpoint, pour voir comment fonctionne le middleware. Vous pouvez également basculer la valeur de l'IP localhost dans la liste blanche entre vrai et FAUX .

Voici un exemple de demande pour montrer quand l'adresse IP n'est pas sur la liste blanche ou quand sa valeur dans la liste blanche est définie sur FAUX :

  Demande de test lorsque l'adresse IP n'est pas sur la liste blanche

Voici une autre demande lorsque l'adresse IP est présente dans la liste blanche IP avec sa valeur définie sur vrai :

comment libérer de l'espace sur windows 10
  Demande de test lorsque l'adresse IP est sur liste blanche