Maak gebruik van Go's Gin-framework om uw web-apps te beveiligen met IP-whitelisting.
In de moderne wereld van internettechnologie, het belang van het waarborgen van de veiligheid van webapplicaties en servers kunnen niet genoeg worden benadrukt, aangezien de frequentie en verfijning van cyberaanvallen blijft toenemen verhogen. Hierdoor neemt ook de behoefte aan robuuste en geavanceerde beveiligingsmaatregelen voor webgebaseerde systemen toe.
Whitelisting van IP-adressen is een van de vele moderne technieken voor het beveiligen van webapplicaties, servers en API's. Hoewel het is alleen gebruikt in bepaalde specifieke gevallen, is het een aanbevolen manier om de toegang tot bronnen op internet te beperken wanneer nodig zijn.
Wat is IP-whitelisting?
IP whitelisting is gewoon een soort witte lijst dat kan worden aangeduid als een webbeveiligingsmaatregel die wordt gebruikt om de toegang tot een netwerk of bron te beperken tot een bepaald IP-adres of een reeks IP-adressen die als geautoriseerd worden beschouwd om toegang te krijgen tot het systeem.
Wanneer IP-whitelisting in een systeem is geïmplementeerd, hebben alleen de IP-adressen die aan de whitelist zijn toegevoegd toegang tot het systeem en de bronnen erop, terwijl andere IP-adressen worden geblokkeerd.
IP-whitelisting is een veel voorkomende manier om zeer kritieke gegevens te beveiligen die alleen beschikbaar zouden moeten zijn voor een individu of een bepaalde groep mensen, en beschermd tegen elke poging tot hacking.
Een veelvoorkomend voorbeeld van IP-whitelisting is in MongoDB Atlas waar u een Mongo-databasecluster opzetten in de cloud en u wordt gevraagd uw huidige IP-adres aan een lijst toe te voegen, zodat verzoeken aan uw database of cluster alleen zijn toegestaan als ze afkomstig zijn van uw computer.
Wanneer moet u IP Whitelisting implementeren?
IP whitelisting is niet iets dat elk systeem of elke applicatie nodig heeft. Er zijn gevallen waarin het wordt aanbevolen en passend is om het in een applicatie of systeem te implementeren. Hieronder volgen enkele voorbeelden van scenario's waarin u zou moeten overwegen om een IP-whitelist te implementeren.
- Wanneer de applicatie alleen bedoeld is voor gebruik door een specifieke groep gebruikers, zoals werknemers of klanten van een bepaald bedrijf.
- Als u wilt dat de applicatie alleen toegankelijk is vanaf een specifieke locatie, kunt u een reeks IP-adressen die specifiek zijn voor die locatie, op de witte lijst zetten.
- Wanneer de toepassing wordt gebruikt om toegang te verschaffen tot vertrouwelijke informatie of intellectueel eigendom, zoals een onderzoeksdatabase of propriëtaire software.
- Wanneer de applicatie privé is maar toegankelijk is via internet en moet worden beschermd tegen externe bedreigingen, zoals DDoS-aanvallen of malware-infecties.
- Wanneer de applicatie wordt gehost op een openbaar cloudplatform en moet worden beschermd tegen ongeautoriseerde toegang door andere huurders of gebruikers van het platform.
- Wanneer de applicatie wordt gebruikt in een gereguleerde branche, zoals de gezondheidszorg of financiën, waar naleving van beveiligingsnormen vereist is.
Er zijn veel meer gevallen, maar als een applicatie een van de hierboven genoemde eigenschappen heeft, moet u overwegen om een IP-whitelist te implementeren.
IP-whitelisting implementeren in Go
Go is een populaire moderne programmeertaal voor het bouwen van webservers en API's gebundeld met alles wat je nodig hebt om een standaard en veilige webapplicatie te bouwen.
Deze sectie demonstreert het gebruik van Go's Gin-framework om de voorbeeldserver en IP-whitelisting-logica te implementeren, wat een middleware-functie is. U kunt het Gin-framework in een project installeren door de volgende opdracht uit te voeren.
ga naar github.com/gin-gonic/gin
Na het installeren van het Gin-framework, kunt u nu doorgaan met het implementeren van de IP-whitelisting-middleware. U kunt overal in uw project een nieuw middlewarebestand maken, afhankelijk van uw projectarchitectuur. Dit is de implementatie van de middleware-functie:
pakket middleware
importeren (
"github.com/gin-gonic/gin"
"net/http"
)funcIPWhiteListMiddleware(witte lijst kaart[snaar]boel)gin.HandlerFunc {
opbrengstfunc(c *gin. Context) {
gebruikerIP := c. Cliënt-IP()
als !witte lijst[gebruikers-IP] {
C. AfbrekenMetStatusJSON(http. StatusVerboden, gin. H{
"fout": "U bent niet gemachtigd om toegang te krijgen tot deze bron!",
})
} anders {
C. Volgende()
}
}
}
In de bovenstaande code is de IPWhiteListMiddleware functie is gedefinieerd om een gedefinieerd IP-adres op de witte lijst als argument te accepteren. De whitelist is geïmplementeerd als een kaartgegevensstructuur, zodat IP-adressen eenvoudig waarden van kunnen worden toegewezen WAAR En vals om hun toegankelijkheid aan te geven.
Vervolgens gebruikt de functie het Gin-framework ClientIP functie om het huidige IP-adres te krijgen van de gebruiker die het verzoek probeert te doen, en controleert of het aanwezig is in de witte lijst en met een WAAR waarde. Als het niet wordt gevonden, of als het een waarde heeft van vals, breekt de middleware het verzoek af en retourneert een 403-fout (Verboden).
Een voorbeeld van een eindpunt om deze functionaliteit te testen kan worden geïmplementeerd om te zien hoe de IP-whitelist werkt. De volgende code is een programma dat een witte lijst definieert en twee eindpunten implementeert (een beperkte en een onbeperkte).
pakket voornaamst
importeren (
"github.com/gin-gonic/gin"
"go-ip-whitelist/middlewares"
"net/http"
)var IPWhitelist = kaart[snaar]boel{
"127.0.0.1": WAAR,
"111.2.3.4": WAAR,
"::1": WAAR,
}funcvoornaamst() {
router := gin. Standaard()router. KRIJGEN("/inhoudsopgave", func(c *gin. Context) {
C. JSON (http. StatusOK, gin. H{
"bericht": "Welkom bij mijn beveiligde applicatie!",
})
})beperkte pagina := router. Groep("/")
beperkte pagina. Gebruik (middlewares. IPWhiteListMiddleware (IPWhitelist))beperkte pagina. KRIJGEN("/adminZone", func(c *gin. Context) {
C. JSON (http. StatusOK, gin. H{
"bericht": "Dit eindpunt is beveiligd met IP whitelisting!",
})
})
router. Loop(":3333")
}
Wanneer de applicatie wordt uitgevoerd met ga rennen main.go, start de server op poort 3333 en kunt u testverzoeken uitvoeren naar de /adminZone eindpunt, om te zien hoe de middleware werkt. U kunt ook de waarde van de localhost IP in de whitelist wisselen tussen WAAR En vals.
Hier is een voorbeeldverzoek om te laten zien wanneer het IP-adres niet op de witte lijst staat of wanneer de waarde ervan op de witte lijst is ingesteld op vals:
Hier is nog een verzoek voor wanneer het IP-adres aanwezig is in de IP-witte lijst met de waarde ingesteld op WAAR:
Mogelijk krijgt u een 403-foutmelding (Verboden) als u het programma test door het generieke localhost IP-adres (127.0.0.1) op de witte lijst te zetten. Het IP-adres dat waarschijnlijk lokaal zal werken is ::1 wat het IPv6-equivalent is van 127.0.0.1 (IPv4). Probeer op de witte lijst te zetten ::1 als 127.0.0.1 weigert te werken, kunt u ook proberen het gebruikerIP variabele in de console om het exacte adres te zien dat wordt gebruikt.
Webapps beveiligen met IP Whitelisting
In de wereld van vandaag is de beveiliging van webapplicaties en -systemen van het grootste belang, aangezien de technologie zich blijft ontwikkelen. IP-whitelisting is een zeer eenvoudige en effectieve manier om de toegang tot bronnen op internet te beperken tot alleen vertrouwde bronnen.
Tot nu toe is in dit artikel het concept van IP-adres whitelisting in detail behandeld, wanneer het moet worden geïmplementeerd en hoe het in Go moet worden geïmplementeerd met behulp van het Gin-framework. Het wordt aanbevolen om IP-whitelisting alleen te implementeren waar nodig om onnodige technische kosten te voorkomen.