Protecció de les aplicacions web de Golang mitjançant la llista blanca IP

Protecció de les aplicacions web de Golang mitjançant la llista blanca IP
Lectors com tu ajuden a donar suport a MUO. Quan feu una compra mitjançant enllaços al nostre lloc, podem guanyar una comissió d'afiliats. Llegeix més.

En l'àmbit modern de la tecnologia d'Internet, la importància de garantir la seguretat de les aplicacions web i dels servidors no es pot exagerar a mesura que la freqüència i la sofisticació dels ciberatacs continuen augmentant. Per això, la necessitat de mesures de seguretat robustes i avançades per als sistemes basats en web també augmenta.





per què és vermell el meu eco?
MAKEUSEO VÍDEO DEL DIA DESPLACEU PER CONTINUAR AMB EL CONTINGUT

La llista blanca d'adreces IP és una de les moltes tècniques modernes per protegir aplicacions web, servidors i API. Tot i que només s'utilitza en alguns casos específics, és una manera recomanada de garantir la restricció de l'accés als recursos a Internet quan sigui necessari.





Què és la llista blanca d'IP?

La llista blanca d'IP és simplement a tipus de llista blanca que es pot denominar una mesura de seguretat web utilitzada per restringir l'accés a una xarxa o recurs a una adreça IP definida o un rang d'adreces IP que es consideren autoritzades per accedir al sistema.





Quan la llista blanca IP s'implementa en un sistema, només les adreces IP que s'afegeixen a la llista blanca poden accedir al sistema i als recursos que hi ha, mentre que altres adreces IP estan bloquejades.

La llista blanca IP és una manera molt comuna d'assegurar dades molt crítiques que només haurien d'estar disponibles per a una persona o un conjunt determinat de persones, i protegides de qualsevol intent de pirateig.



Un exemple comú de llista blanca d'IP és a MongoDB Atlas on vostè configurar un clúster de bases de dades Mongo al núvol i se us demana que afegiu la vostra adreça IP actual a una llista de manera que les sol·licituds a la vostra base de dades o clúster només es permetin quan provenen del vostre ordinador.

Quan hauríeu d'implementar la llista blanca d'IP?

La llista blanca d'IP no és una cosa que necessiten tots els sistemes o aplicacions. Hi ha casos en què és recomanable i adequat implementar-lo en una aplicació o sistema. A continuació es mostren alguns exemples d'escenaris en què hauríeu de considerar la implementació d'una llista blanca d'IP.





  • Quan l'aplicació només està pensada per ser utilitzada per un grup específic d'usuaris, com ara empleats o clients d'una empresa determinada.
  • Quan voleu que l'aplicació sigui accessible només des d'una ubicació específica, només podeu incloure una llista blanca d'adreces IP específiques per a aquesta ubicació.
  • Quan l'aplicació s'utilitza per proporcionar accés a informació confidencial o propietat intel·lectual, com ara una base de dades de recerca o programari propietari.
  • Quan l'aplicació és privada però accessible a través d'Internet i s'ha de protegir d'amenaces externes, com ara atacs DDoS o infeccions de programari maliciós.
  • Quan l'aplicació està allotjada en una plataforma de núvol públic i s'ha de protegir de l'accés no autoritzat per part d'altres inquilins o usuaris de la plataforma.
  • Quan l'aplicació s'utilitza en una indústria regulada, com la sanitària o financera, on es requereix el compliment dels estàndards de seguretat.

Hi ha molts més casos, però fonamentalment, sempre que una aplicació tingui alguna de les propietats esmentades anteriorment, hauríeu de considerar la implementació d'una llista blanca d'IP.

Com implementar la llista blanca IP a Go

Go és un llenguatge de programació modern popular per crear servidors web i APIs amb tot el que necessiteu per crear una aplicació web estàndard i segura.





Aquesta secció demostra l'ús del marc Gin de Go per implementar el servidor d'exemple i la lògica de llista blanca d'IP, que és una funció de middleware. Podeu instal·lar el marc Gin en un projecte executant l'ordre següent.

 go get github.com/gin-gonic/gin 

Després d'instal·lar el marc Gin, ara podeu implementar el programari intermedi de llista blanca d'IP. Podeu crear un fitxer middleware nou a qualsevol part del vostre projecte, depenent de l'arquitectura del vostre projecte. Aquí teniu la implementació de la funció de 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()
        }
    }
}

Al codi anterior, el IPWhiteListMiddleware La funció es defineix per acceptar una llista blanca d'adreces IP definides com a argument. La llista blanca s'implementa com una estructura de dades de mapa perquè les adreces IP es puguin assignar valors fàcilment veritat i fals per indicar la seva accessibilitat.

Aleshores, la funció utilitza el marc de Gin ClientIP funció per obtenir l'adreça IP actual de l'usuari que intenta fer la sol·licitud, i comprova si està present a la llista blanca i amb un veritat valor. Si no es troba, o es troba que té un valor de fals , el programari intermediari avorta la sol·licitud i retorna un error 403 (prohibit).

Es pot implementar un punt final de mostra per provar aquesta funcionalitat per veure com funciona la llista blanca d'IP. El codi següent és un programa que defineix una llista blanca i implementa dos punts finals (un de restringit i un de no restringit).

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

Quan l'aplicació s'executa amb anar a córrer main.go , el servidor s'inicia al port 3333 i podeu executar sol·licituds de prova al /adminZone punt final, per veure com funciona el programari intermedi. També podeu canviar el valor de la IP localhost a la llista blanca entre veritat i fals .

Aquí hi ha una sol·licitud de mostra per mostrar quan l'adreça IP no està a la llista blanca o quan el seu valor a la llista blanca està establert en fals :

  Sol·licitud de prova per quan l'adreça IP no està a la llista blanca

Aquí hi ha una altra sol·licitud per quan l'adreça IP està present a la llista blanca d'IP amb el seu valor definit veritat :

  Sol·licitud de prova per quan l'adreça IP està a la llista blanca