Osiguravanje Golang web aplikacija korištenjem popisa dopuštenih IP adresa

Osiguravanje Golang web aplikacija korištenjem popisa dopuštenih IP adresa
Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

U modernom području internetske tehnologije, važnost osiguravanja sigurnosti web aplikacija i poslužitelja ne može se precijeniti jer učestalost i sofisticiranost kibernetičkih napada nastavljaju rasti. Zbog toga je također u porastu potreba za robusnim i najsuvremenijim sigurnosnim mjerama za web-bazirane sustave.





MAKEUSEOF VIDEO DANA POMICI SE ZA NASTAVAK SA SADRŽAJEM

Popis dopuštenih IP adresa jedna je od mnogih modernih tehnika za osiguranje web aplikacija, poslužitelja i API-ja. Iako se koristi samo u nekim posebnim slučajevima, to je preporučeni način osiguravanja ograničenja pristupa resursima na internetu kada je to potrebno.





Što je IP Whitelisting?

IP dopušteni popis je jednostavno a vrsta popisa dopuštenih koji se može nazvati sigurnosnom mjerom weba koja se koristi za ograničavanje pristupa mreži ili resursu na definiranu IP adresu ili raspon IP adresa koje se smatraju ovlaštenima za pristup sustavu.





Kada se u sustav implementira popis dopuštenih IP adresa, samo IP adrese koje su dodane na popis dopuštenih mogu pristupiti sustavu i resursima na njemu, dok su ostale IP adrese blokirane.

zašto se ne prikazuje moj vanjski tvrdi disk

Popis IP dopuštenih vrlo je uobičajen način osiguravanja vrlo kritičnih podataka koji bi trebali biti dostupni samo pojedincu ili određenom skupu ljudi i zaštićeni od bilo kakvog pokušaja hakiranja.



Uobičajeni primjer popisa dopuštenih IP adresa je u MongoDB Atlasu gdje vi postaviti Mongo klaster baze podataka u oblaku i od vas se traži da dodate svoju trenutnu IP adresu na popis tako da su zahtjevi vašoj bazi podataka ili klasteru dopušteni samo kada dolaze s vašeg računala.

Kada biste trebali implementirati popis dopuštenih IP adresa?

Popis dopuštenih IP adresa nije nešto što treba svakom sustavu ili aplikaciji. Postoje slučajevi u kojima je preporučljivo i prikladno implementirati ga u aplikaciju ili sustav. Slijedi nekoliko primjera scenarija u kojima biste trebali razmotriti implementaciju popisa dopuštenih IP adresa.





  • Kada je aplikacija namijenjena samo određenoj skupini korisnika, kao što su zaposlenici ili klijenti određene tvrtke.
  • Ako želite da aplikacija bude dostupna samo s određene lokacije, na popisu dopuštenih možete staviti niz IP adresa specifičnih samo za tu lokaciju.
  • Kada se aplikacija koristi za pružanje pristupa povjerljivim informacijama ili intelektualnom vlasništvu, kao što je istraživačka baza podataka ili vlasnički softver.
  • Kada je aplikacija privatna, ali dostupna putem interneta i treba je zaštititi od vanjskih prijetnji, kao što su DDoS napadi ili infekcije zlonamjernim softverom.
  • Kada se aplikacija nalazi na javnoj platformi u oblaku i treba je zaštititi od neovlaštenog pristupa drugih stanara ili korisnika platforme.
  • Kada se aplikacija koristi u reguliranoj industriji, kao što je zdravstvo ili financije, gdje je potrebna usklađenost sa sigurnosnim standardima.

Postoji mnogo više slučajeva, ali u osnovi, kad god aplikacija ima bilo koje od gore navedenih svojstava, trebali biste razmisliti o implementaciji popisa dopuštenih IP adresa.

Kako implementirati popis dopuštenih IP adresa u Go

Go je popularan moderni programski jezik za izgradnju web poslužitelja i API-ji u paketu sa svime što vam je potrebno za izgradnju standardne i sigurne web aplikacije.





prosljeđivanje tekstualnih poruka na e -poštu android

Ovaj odjeljak demonstrira upotrebu Go's Gin okvira za implementaciju uzorka poslužitelja i logike popisa dopuštenih IP adresa što je funkcija međuprograma. Gin okvir možete instalirati u projekt izvođenjem sljedeće naredbe.

 go get github.com/gin-gonic/gin 

Nakon instaliranja okvira Gin, sada možete nastaviti s implementacijom međuwarea za popis dopuštenih IP adresa. Možete stvoriti novu datoteku međuprograma bilo gdje u svom projektu, ovisno o arhitekturi vašeg projekta. Evo implementacije funkcije međuprograma:

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

U gornjem kodu, IPWhiteListMiddleware funkcija je definirana da prihvati definiranu listu dopuštenih IP adresa kao argument. Popis dopuštenih implementiran je kao struktura podataka karte tako da se IP adresama mogu jednostavno dodijeliti vrijednosti pravi i lažno kako bi označili njihovu dostupnost.

Zatim funkcija koristi okvir Gin IP klijenta funkcija za dobivanje trenutne IP adrese korisnika koji pokušava podnijeti zahtjev i provjerava je li prisutna na popisu dopuštenih i s pravi vrijednost. Ako nije pronađeno ili se utvrdi da ima vrijednost lažno , međuprogram prekida zahtjev i vraća pogrešku 403 (Zabranjeno).

Uzorak krajnje točke za testiranje ove funkcije može se implementirati da se vidi kako radi popis dopuštenih IP adresa. Sljedeći kod je program koji definira popis dopuštenih i implementira dvije krajnje točke (ograničenu i neograničenu).

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

Kada se aplikacija pokrene s go run main.go , poslužitelj se pokreće na priključku 3333 i možete pokrenuti testne zahtjeve na /adminZone endpoint, da biste vidjeli kako međuopreme radi. Također možete mijenjati vrijednost IP-a lokalnog hosta na popisu dopuštenih između pravi i lažno .

istraživač datoteka za tamnu temu za Windows 10

Evo primjera zahtjeva za prikaz kada IP adresa nije na popisu dopuštenih ili kada je njezina vrijednost na popisu dopuštenih postavljena na lažno :

  Testni zahtjev kada IP adresa nije na popisu dopuštenih

Evo još jednog zahtjeva kada je IP adresa prisutna na popisu dopuštenih IP adresa s vrijednošću postavljenom na pravi :

  Testirajte zahtjev kada je IP adresa na popisu dopuštenih