Utilizza il framework Gin di Go per proteggere le tue app Web con la whitelist IP.
Nel regno moderno della tecnologia Internet, l'importanza di garantire la sicurezza delle applicazioni web e i server non possono essere sopravvalutati poiché la frequenza e la sofisticazione degli attacchi informatici continuano a farlo intensificare. Per questo motivo, è in aumento anche la necessità di misure di sicurezza robuste e all'avanguardia per i sistemi basati sul web.
La whitelist degli indirizzi IP è una delle molte tecniche moderne per proteggere applicazioni Web, server e API. Sebbene sia utilizzato solo in alcuni casi specifici, è un modo consigliato per garantire la restrizione dell'accesso alle risorse su Internet quando necessario.
Che cos'è la whitelist IP?
La whitelist IP è semplicemente un tipo di whitelist che può essere definita una misura di sicurezza Web utilizzata per limitare l'accesso a una rete o risorsa a un indirizzo IP definito o a un intervallo di indirizzi IP considerati autorizzati ad accedere al sistema.
Quando la whitelist IP viene implementata in un sistema, solo gli indirizzi IP aggiunti alla whitelist sono in grado di accedere al sistema e alle risorse su di esso, mentre gli altri indirizzi IP vengono bloccati.
La whitelisting IP è un modo molto comune per proteggere dati molto critici che dovrebbero essere disponibili solo a un individuo o a un determinato gruppo di persone e protetti da qualsiasi tentativo di hacking.
Un esempio comune di whitelist IP è in MongoDB Atlas dove tu configurare un cluster di database Mongo nel cloud e ti viene chiesto di aggiungere il tuo attuale indirizzo IP a un elenco in modo che le richieste al tuo database o cluster siano consentite solo quando provengono dal tuo computer.
Quando dovresti implementare la whitelist IP?
La whitelist IP non è qualcosa di cui ogni sistema o applicazione ha bisogno. Ci sono casi in cui è consigliabile e opportuno implementarlo in un'applicazione o in un sistema. Di seguito sono riportati alcuni esempi di scenari in cui dovresti prendere in considerazione l'implementazione di una whitelist IP.
- Quando l'applicazione è destinata esclusivamente all'uso da parte di un gruppo specifico di utenti, ad esempio dipendenti o clienti di una determinata azienda.
- Quando desideri che l'applicazione sia accessibile solo da una posizione specifica, puoi autorizzare un intervallo di indirizzi IP specifici solo per quella posizione.
- Quando l'applicazione viene utilizzata per fornire accesso a informazioni riservate o proprietà intellettuale, come un database di ricerca o un software proprietario.
- Quando l'applicazione è privata ma accessibile tramite Internet e deve essere protetta da minacce esterne, come attacchi DDoS o infezioni da malware.
- Quando l'applicazione è ospitata su una piattaforma cloud pubblica e deve essere protetta dall'accesso non autorizzato da parte di altri tenant o utenti della piattaforma.
- Quando l'applicazione viene utilizzata in un settore regolamentato, come la sanità o la finanza, dove è richiesta la conformità agli standard di sicurezza.
Esistono molti altri casi, ma fondamentalmente, ogni volta che un'applicazione ha una delle proprietà sopra indicate, dovresti prendere in considerazione l'implementazione di una whitelist IP.
Come implementare la whitelist IP in Go
Go è un popolare linguaggio di programmazione moderno per la creazione di server Web e API in bundle con tutto il necessario per creare un'applicazione Web standard e sicura.
Questa sezione illustra l'uso del framework Gin di Go per implementare il server di esempio e la logica di whitelisting IP che è una funzione middleware. È possibile installare il framework Gin in un progetto eseguendo il comando seguente.
vai su github.com/gin-gonic/gin
Dopo aver installato il framework Gin, ora puoi procedere con l'implementazione del middleware di whitelist IP. È possibile creare un nuovo file middleware in qualsiasi punto del progetto, a seconda dell'architettura del progetto. Ecco l'implementazione della funzione middleware:
pacchetto middleware
importare (
"github.com/gin-gonic/gin"
"rete/http"
)funzIPWhiteListMiddleware(lista bianca carta geografica[corda]bool)Gin.HandlerFunc {
ritornofunz(c*gin. Contesto) {
IPutente := c. IPcliente()
Se !whitelist[userIP] {
C. AbortWithStatusJSON(http. StatoProibito, gin. H{
"errore": "Non sei autorizzato ad accedere a questa risorsa!",
})
} altro {
C. Prossimo()
}
}
}
Nel codice sopra, il IPWhiteListMiddleware La funzione è definita per accettare una whitelist di indirizzi IP definita come argomento. La whitelist è implementata come una struttura di dati della mappa in modo che gli indirizzi IP possano essere facilmente assegnati ai valori di VERO E falso per indicare la loro accessibilità.
Quindi la funzione utilizza il framework Gin ClientIP funzione per ottenere l'indirizzo IP corrente dell'utente che tenta di effettuare la richiesta, e verifica se è presente nella whitelist e con un VERO valore. Se non viene trovato o risulta avere un valore di falso, il middleware interrompe la richiesta e restituisce un errore 403 (Forbidden).
È possibile implementare un endpoint di esempio per testare questa funzionalità per vedere come funziona la whitelist IP. Il codice seguente è un programma che definisce una whitelist e implementa due endpoint (uno limitato e uno non limitato).
pacchetto principale
importare (
"github.com/gin-gonic/gin"
"go-ip-whitelist/middleware"
"rete/http"
)var Lista bianca IP = carta geografica[corda]bool{
"127.0.0.1": VERO,
"111.2.3.4": VERO,
"::1": VERO,
}funzprincipale() {
router := gin. Predefinito()router. OTTENERE("/indice", funz(c*gin. Contesto) {
C. JSON(http. StatoOK, gin. H{
"Messaggio": "Benvenuto nella mia applicazione sicura!",
})
})limitedPage := router. Gruppo("/")
limitedPage. Usa (middleware. IPWhiteListMiddleware (IPWhitelist))limitedPage. OTTENERE("/adminZona", funz(c*gin. Contesto) {
C. JSON(http. StatoOK, gin. H{
"Messaggio": "Questo endpoint è protetto con la whitelist IP!",
})
})
router. Correre(":3333")
}
Quando l'applicazione viene eseguita con vai a eseguire main.go, il server si avvia sulla porta 3333 ed è possibile eseguire richieste di test al /adminZone endpoint, per vedere come funziona il middleware. Puoi anche alternare il valore dell'IP dell'host locale nella whitelist tra VERO E falso.
Ecco una richiesta di esempio da mostrare quando l'indirizzo IP non è nella whitelist o quando il suo valore nella whitelist è impostato su falso:
Ecco un'altra richiesta per quando l'indirizzo IP è presente nella whitelist IP con il suo valore impostato su VERO:
Potresti ricevere una risposta di errore 403 (Forbidden) se provi il programma inserendo nella whitelist l'indirizzo IP localhost generico (127.0.0.1). L'indirizzo IP che molto probabilmente funzionerà localmente è ::1 che è l'equivalente IPv6 di 127.0.0.1 (Ipv4). Prova a inserire nella whitelist ::1 se 127.0.0.1 si rifiuta di funzionare, puoi anche provare a registrare il file userIP variabile nella console per vedere l'indirizzo esatto utilizzato.
Protezione delle app Web con whitelist IP
Nel mondo di oggi, la sicurezza delle applicazioni e dei sistemi Web è della massima importanza poiché la tecnologia continua ad avanzare. La whitelisting IP è un modo molto semplice ed efficace per limitare l'accesso alle risorse su Internet solo a fonti attendibili.
Finora in questo articolo, il concetto di whitelist degli indirizzi IP è stato trattato in dettaglio, quando implementarlo e come implementarlo in Go utilizzando il framework Gin. Si consiglia di implementare la whitelist IP solo ove appropriato per evitare costi tecnici non necessari.