Utilisez le framework Go's Gin pour sécuriser vos applications Web avec la liste blanche IP.
Dans le domaine moderne de la technologie Internet, l'importance d'assurer la sécurité des applications Web et les serveurs ne peuvent être surestimés car la fréquence et la sophistication des cyberattaques continuent de 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.
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 soit utilisé uniquement dans certains cas spécifiques, il s'agit d'un moyen recommandé d'assurer la restriction de l'accès aux ressources sur Internet lorsque nécessaire.
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 Go's Gin 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.
allez chercher 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 :
emballer intergiciels
importer (
"github.com/gin-gonic/gin"
"net/http"
)fonctionIPWhiteListMiddleware(liste blanche carte[chaîne]bourdonner)Gin.HandlerFunc {
retourfonction(c*gin. Contexte) {
userIP := c. ClientIP()
si !whitelist[userIP] {
c. AbortWithStatusJSON(http. Statut Interdit, gin. H{
"erreur": "Vous n'êtes pas autorisé à accéder à cette ressource !",
})
} autre {
c. Suivant()
}
}
}
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).
emballer principal
importer (
"github.com/gin-gonic/gin"
"go-ip-liste blanche/intergiciels"
"net/http"
)var IPWhitelist = carte[chaîne]bourdonner{
"127.0.0.1": vrai,
"111.2.3.4": vrai,
"::1": vrai,
}fonctionprincipal() {
routeur := gin. Défaut()routeur. OBTENIR("/indice", fonction(c*gin. Contexte) {
c. JSON(http. StatutOK, gin. H{
"message": "Bienvenue sur mon application sécurisée !",
})
})restreintPage := routeur. Groupe("/")
page restreinte. Utiliser (middlewares. IPWhiteListMiddleware (IPWhitelist))page restreinte. OBTENIR("/zoneadmin", fonction(c*gin. Contexte) {
c. JSON(http. StatutOK, gin. H{
"message": "Ce point de terminaison est sécurisé avec une liste blanche d'IP !",
})
})
routeur. Courir(":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 /adminZone 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:
Voici une autre demande lorsque l'adresse IP est présente dans la liste blanche IP avec sa valeur définie sur vrai:
Vous pouvez obtenir une réponse d'erreur 403 (Interdit) si vous testez le programme en ajoutant à la liste blanche l'adresse IP générique de l'hôte local (127.0.0.1). L'adresse IP qui fonctionnera très probablement localement est ::1 qui est l'équivalent IPv6 de 127.0.0.1 (Ipv4). Essayez la liste blanche ::1 si 127.0.0.1 refuse de fonctionner, et vous pouvez également essayer de connecter le userIP variable dans la console pour voir l'adresse exacte utilisée.
Sécuriser les applications Web avec la liste blanche IP
Dans le monde d'aujourd'hui, la sécurité des applications et des systèmes Web est de la plus haute importance à mesure que la technologie progresse. La liste blanche IP est un moyen très simple et efficace de restreindre l'accès aux ressources sur Internet aux seules sources fiables.
Jusqu'à présent, dans cet article, le concept de liste blanche d'adresses IP a été couvert en détail, quand l'implémenter et comment l'implémenter dans Go à l'aide du framework Gin. Il est recommandé de n'implémenter la liste blanche IP que le cas échéant pour éviter des coûts techniques inutiles.