Gør brug af Go's Gin-ramme til at sikre dine webapps med IP-hvidlisting.

I den moderne verden af ​​internetteknologi er vigtigheden af ​​at sikre sikkerheden af ​​webapplikationer og servere kan ikke overvurderes, da hyppigheden og sofistikeringen af ​​cyberangreb fortsætter med at forhøje. På grund af dette er behovet for robuste og banebrydende sikkerhedsforanstaltninger til webbaserede systemer også stigende.

Whitelisting af IP-adresser er en af ​​de mange moderne teknikker til sikring af webapplikationer, servere og API'er. Selvom det er kun bruges i nogle specifikke tilfælde, er det en anbefalet måde at sikre begrænsning af adgang til ressourcer på internettet når havde brug for.

Hvad er IP-hvidlisting?

IP whitelisting er simpelthen en type hvidlistning der kan omtales som en websikkerhedsforanstaltning, der bruges til at begrænse adgangen til et netværk eller en ressource til en defineret IP-adresse eller række af IP-adresser, der anses for at være autoriseret til at få adgang til systemet.

Når IP-hvidliste er implementeret i et system, er det kun de IP-adresser, der føjes til hvidlisten, der kan få adgang til systemet og ressourcer på det, mens andre IP-adresser er blokeret.

IP-hvidlisting er en meget almindelig måde at sikre meget kritiske data på, som kun bør være tilgængelige for en enkeltperson eller et givet sæt mennesker og beskyttet mod ethvert hackingforsøg.

Et almindeligt eksempel på IP-hvidlisting er i MongoDB Atlas, hvor du opsætte en Mongo-databaseklynge i skyen og du bliver bedt om at tilføje din nuværende IP-adresse til en liste, så anmodninger til din database eller klynge kun er tilladt, når de kommer fra din computer.

Hvornår skal du implementere IP-hvidlisting?

IP-hvidlisting er ikke noget alle systemer eller applikationer har brug for. Der er tilfælde, hvor det anbefales og hensigtsmæssigt at implementere det i en applikation eller et system. Følgende er nogle eksempler på scenarier, hvor du bør overveje at implementere en IP-hvidliste.

  • Når applikationen kun er beregnet til brug af en bestemt gruppe brugere, såsom medarbejdere eller kunder i en bestemt virksomhed.
  • Når du ønsker, at applikationen kun skal være tilgængelig fra en bestemt placering, kan du hvidliste en række IP-adresser, der kun er specifikke for denne placering.
  • Når applikationen bruges til at give adgang til fortrolige oplysninger eller intellektuel ejendom, såsom en forskningsdatabase eller proprietær software.
  • Når applikationen er privat, men tilgængelig via internettet og skal beskyttes mod eksterne trusler, såsom DDoS-angreb eller malware-infektioner.
  • Når applikationen hostes på en offentlig cloudplatform og skal beskyttes mod uautoriseret adgang fra andre lejere eller brugere af platformen.
  • Når applikationen bruges i en reguleret industri, såsom sundhedspleje eller finans, hvor overholdelse af sikkerhedsstandarder er påkrævet.

Der er mange flere tilfælde, men grundlæggende, når en applikation har nogen af ​​de egenskaber, der er nævnt ovenfor, bør du overveje at implementere en IP-hvidliste.

Sådan implementeres IP-hvidlisting i Go

Go er et populært moderne programmeringssprog til opbygning af webservere og API'er med alt hvad du behøver for at bygge en standard og sikker webapplikation.

Dette afsnit demonstrerer brugen af ​​Go's Gin-framework til at implementere prøveserveren og IP-hvidlistelogikken, som er en middleware-funktion. Du kan installere Gin-rammeværket i et projekt ved at køre følgende kommando.

hent github.com/gin-gonic/gin

Efter installation af Gin-rammeværket, kan du nu gå videre med at implementere IP-hvidlisting-middlewaren. Du kan oprette en ny middleware-fil hvor som helst i dit projekt, afhængigt af din projektarkitektur. Her er implementeringen af ​​middleware-funktionen:

pakke mellemvare

importere (
"github.com/gin-gonic/gin"
"net/http"
)

funcIPWhiteListMiddleware(hvidliste kort[snor]bool)gin.HandlerFunc {
Vend tilbagefunc(c *gin. Sammenhæng) {
bruger-IP := c. ClientIP()

hvis !hvidliste[bruger-IP] {
c. AbortWithStatusJSON(http. StatusForbidden, gin. H{
"fejl": "Du er ikke autoriseret til at få adgang til denne ressource!",
})
} andet {
c. Næste()
}
}
}

I koden ovenfor er IPWhiteListMiddleware funktion er defineret til at acceptere en defineret IP-adressehvidliste som et argument. Whitelisten er implementeret som en kortdatastruktur, så IP-adresser nemt kan tildeles værdier af rigtigt og falsk for at angive deres tilgængelighed.

Så bruger funktionen Gin-rammerne Klient-IP funktion til at få den aktuelle IP-adresse på den bruger, der forsøger at lave anmodningen, og tjekker, om den er til stede på hvidlisten og med en rigtigt værdi. Hvis det ikke er fundet, eller det viser sig at have en værdi på falsk, afbryder mellemwaren anmodningen og returnerer en 403-fejl (forbudt).

Et eksempelslutpunkt til at teste denne funktionalitet kan implementeres for at se, hvordan IP-hvidlisten fungerer. Følgende kode er et program, der definerer en hvidliste og implementerer to endepunkter (et begrænset og et ubegrænset).

pakke vigtigste

importere (
"github.com/gin-gonic/gin"
"go-ip-hvidliste/middlewares"
"net/http"
)

var IPWhitelist = kort[snor]bool{
"127.0.0.1": rigtigt,
"111.2.3.4": rigtigt,
"::1": rigtigt,
}

funcvigtigste() {
router := gin. Standard()

router. FÅ("/indeks", func(c *gin. Sammenhæng) {
c. JSON(http. StatusOK, gin. H{
"besked": "Velkommen til min sikre ansøgning!",
})
})

restrictedPage := router. Gruppe("/")
begrænset Side. Brug (mellemvarer. IPWhiteListMiddleware (IPWhitelist))

begrænset Side. FÅ("/adminZone", func(c *gin. Sammenhæng) {
c. JSON(http. StatusOK, gin. H{
"besked": "Dette slutpunkt er sikret med IP-hvidlisting!",
})
})

router. Løb(":3333")
}

Når applikationen køres med gå løb main.go, serveren starter på port 3333, og du kan køre testanmodninger til /adminZone slutpunkt for at se, hvordan middlewaren fungerer. Du kan også skifte værdien af ​​den lokale værts IP på hvidlisten mellem rigtigt og falsk.

Her er en prøveanmodning, der skal vise, hvornår IP-adressen ikke er hvidlistet, eller når dens værdi på hvidlisten er indstillet til falsk:

Her er en anden anmodning om, hvornår IP-adressen er til stede på IP-hvidlisten med dens værdi sat til rigtigt:

Du får muligvis et 403-fejlsvar (forbudt), hvis du tester programmet ved at hvidliste den generiske localhost-IP-adresse (127.0.0.1). Den IP-adresse, der højst sandsynligt vil fungere lokalt, er ::1 hvilket er IPv6-ækvivalenten til 127.0.0.1 (Ipv4). Prøv at hvidliste ::1 hvis 127.0.0.1 nægter at virke, og du kan også prøve at logge på bruger IP variabel i konsollen for at se den nøjagtige adresse, der bruges.

Sikring af webapps med IP-hvidlisting

I dagens verden er sikkerheden af ​​webapplikationer og systemer af største vigtighed, da teknologien bliver ved med at udvikle sig. IP-hvidlisting er en meget enkel og effektiv måde at begrænse adgangen til ressourcer på internettet til kun pålidelige kilder.

Indtil videre i denne artikel er konceptet med IP-adressehvidlisting blevet dækket i detaljer, hvornår det skal implementeres, og hvordan man implementerer det i Go ved hjælp af Gin-rammerne. Det anbefales kun at implementere IP-hvidlisting, hvor det er relevant for at undgå unødvendige tekniske omkostninger.