Bruk Go's Gin-rammeverket for å sikre nettappene dine med IP-hvitelisting.
I det moderne riket av internettteknologi er viktigheten av å sikre sikkerheten til nettapplikasjoner og servere kan ikke overvurderes ettersom frekvensen og sofistikeringen av cyberangrep fortsetter å forsterke. På grunn av dette øker også behovet for robuste og banebrytende sikkerhetstiltak for nettbaserte systemer.
Hvitelisting av IP-adresser er en av de mange moderne teknikkene for å sikre nettapplikasjoner, servere og APIer. Selv om det er det bare brukt i noen spesifikke tilfeller, er det en anbefalt måte å sikre begrensning av tilgang til ressurser på internett når behov for.
Hva er IP-hvitelisting?
IP-hvitelisting er ganske enkelt en type hviteliste som kan refereres til som et nettsikkerhetstiltak som brukes til å begrense tilgangen til et nettverk eller en ressurs til en definert IP-adresse eller et utvalg av IP-adresser som anses som autorisert til å få tilgang til systemet.
Når IP-hvitelisting er implementert i et system, er det bare IP-adressene som er lagt til hvitelisten som har tilgang til systemet og ressursene på det, mens andre IP-adresser er blokkert.
IP-hvitelisting er en veldig vanlig måte å sikre svært kritiske data på, som bare skal være tilgjengelig for en enkeltperson eller et gitt sett med personer, og beskyttet mot ethvert hackingforsøk.
Et vanlig eksempel på IP-hvitelisting er i MongoDB Atlas hvor du sette opp en Mongo-databaseklynge i skyen og du blir bedt om å legge til din nåværende IP-adresse i en liste slik at forespørsler til databasen eller klyngen din bare tillates når de kommer fra datamaskinen din.
Når bør du implementere IP-hvitelisting?
IP-hvitelisting er ikke noe alle systemer eller applikasjoner trenger. Det er tilfeller der det er anbefalt og hensiktsmessig å implementere det i en applikasjon eller et system. Følgende er noen eksempler på scenarier der du bør vurdere å implementere en IP-hviteliste.
- Når applikasjonen kun er ment for bruk av en bestemt gruppe brukere, for eksempel ansatte eller kunder i et bestemt selskap.
- Når du vil at applikasjonen bare skal være tilgjengelig fra et bestemt sted, kan du hvitliste en rekke IP-adresser som kun er spesifikke for det stedet.
- Når applikasjonen brukes til å gi tilgang til konfidensiell informasjon eller åndsverk, for eksempel en forskningsdatabase eller proprietær programvare.
- Når applikasjonen er privat, men tilgjengelig over internett og må beskyttes mot eksterne trusler, for eksempel DDoS-angrep eller skadelig programvare.
- Når applikasjonen er vert på en offentlig skyplattform og må beskyttes mot uautorisert tilgang av andre leietakere eller brukere av plattformen.
- Når applikasjonen brukes i en regulert bransje, som helsevesen eller finans, hvor overholdelse av sikkerhetsstandarder kreves.
Det er mange flere tilfeller, men fundamentalt sett, når en applikasjon har noen av egenskapene nevnt ovenfor, bør du vurdere å implementere en IP-hviteliste.
Hvordan implementere IP-hvitelisting i Go
Go er et populært moderne programmeringsspråk for å bygge webservere og API-er med alt du trenger for å bygge en standard og sikker nettapplikasjon.
Denne delen demonstrerer bruken av Go's Gin-rammeverk for å implementere prøveserveren og IP-hvitelistingslogikken som er en mellomvarefunksjon. Du kan installere Gin-rammeverket i et prosjekt ved å kjøre følgende kommando.
gå til github.com/gin-gonic/gin
Etter å ha installert Gin-rammeverket, kan du nå gå videre med å implementere mellomvare for IP-hviteliste. Du kan opprette en ny mellomvarefil hvor som helst i prosjektet, avhengig av prosjektarkitekturen. Her er implementeringen av mellomvarefunksjonen:
pakke mellomvare
import (
"github.com/gin-gonic/gin"
"net/http"
)funcIPWhiteListMiddleware(hviteliste kart[streng]bool)gin.HandlerFunc {
komme tilbakefunc(c *gin. Kontekst) {
bruker-IP := c. ClientIP()
hvis !hviteliste[bruker-IP] {
c. AbortWithStatusJSON(http. StatusForbidden, gin. H{
"feil": "Du er ikke autorisert til å få tilgang til denne ressursen!",
})
} ellers {
c. Neste()
}
}
}
I koden ovenfor er det IPWhiteListMiddleware funksjonen er definert til å akseptere en definert IP-adressehviteliste som et argument. Hvitelisten er implementert som en kartdatastruktur slik at IP-adresser enkelt kan tildeles verdier av ekte og falsk for å indikere deres tilgjengelighet.
Deretter bruker funksjonen Gin-rammeverket Klient-IP funksjon for å få den gjeldende IP-adressen til brukeren som prøver å gjøre forespørselen, og sjekker om den er til stede i hvitelisten og med en ekte verdi. Hvis det ikke er funnet, eller det viser seg å ha en verdi på falsk, avbryter mellomvaren forespørselen og returnerer en 403-feil (Forbidden).
Et eksempelendepunkt for å teste denne funksjonaliteten kan implementeres for å se hvordan IP-hvitelisten fungerer. Følgende kode er et program som definerer en hviteliste og implementerer to endepunkter (et begrenset og et ubegrenset).
pakke hoved-
import (
"github.com/gin-gonic/gin"
"go-ip-hviteliste/mellomvare"
"net/http"
)var IPWhitelist = kart[streng]bool{
"127.0.0.1": ekte,
"111.2.3.4": ekte,
"::1": ekte,
}funchoved-() {
ruter := gin. Misligholde()ruter. FÅ("/indeks", func(c *gin. Kontekst) {
c. JSON(http. StatusOK, gin. H{
"beskjed": "Velkommen til min sikre søknad!",
})
})restrictedPage := ruter. Gruppe("/")
begrenset side. Bruk (mellomvare. IPWhiteListMiddleware (IPWhitelist))begrenset side. FÅ("/adminZone", func(c *gin. Kontekst) {
c. JSON(http. StatusOK, gin. H{
"beskjed": "Dette endepunktet er sikret med IP-hvitelisting!",
})
})
ruter. Løpe(":3333")
}
Når applikasjonen kjøres med gå løp main.go, starter serveren på port 3333, og du kan kjøre testforespørsler til /adminZone endepunkt, for å se hvordan mellomvaren fungerer. Du kan også bytte verdien til localhost IP i hvitelisten mellom ekte og falsk.
Her er en eksempelforespørsel for å vise når IP-adressen ikke er hvitelistet eller når verdien i hvitelisten er satt til falsk:
Her er en annen forespørsel om når IP-adressen er til stede i IP-hvitelisten med verdien satt til ekte:
Du kan få et 403-feilsvar (Forbidden) hvis du tester programmet ved å hviteliste den generiske localhost IP-adressen (127.0.0.1). IP-adressen som mest sannsynlig vil fungere lokalt er ::1 som er IPv6-ekvivalenten til 127.0.0.1 (Ipv4). Prøv å hviteliste ::1 hvis 127.0.0.1 nekter å fungere, og du kan også prøve å logge bruker-IP variabel i konsollen for å se den nøyaktige adressen som brukes.
Sikring av nettapper med IP-hvitelisting
I dagens verden er sikkerheten til nettapplikasjoner og systemer av største betydning ettersom teknologien fortsetter å utvikle seg. IP-hvitelisting er en veldig enkel og effektiv måte å begrense tilgangen til ressurser på internett til kun pålitelige kilder.
Så langt i denne artikkelen har konseptet med hvitlisting av IP-adresser blitt dekket i detalj, når det skal implementeres og hvordan det implementeres i Go ved å bruke Gin-rammeverket. Det anbefales kun å implementere IP-hvitelisting der det er hensiktsmessig for å unngå unødvendige tekniske kostnader.