Iskoristite Go's Gin framework kako biste osigurali svoje web-aplikacije stavljanjem na popis dopuštenih IP adresa.

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

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

Š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.

instagram viewer

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.

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.

idi uzmi 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:

paket međuprogrami

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

funkIPWhiteListMiddleware(bijela lista karta[niz]bool)džin.HandlerFunc {
povratakfunk(c *gin. Kontekst) {
userIP := c. IP klijenta()

ako !bijeli popis[userIP] {
c. Prekini sa statusomJSON(http. StatusZabranjeno, gin. H{
"greška": "Niste ovlašteni za pristup ovom resursu!",
})
} drugo {
c. Sljedeći()
}
}
}

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).

paket glavni

uvoz (
"github.com/gin-gonic/gin"
"go-ip-whitelist/middlewares"
"net/http"
)

var IPWhitelist = karta[niz]bool{
"127.0.0.1": pravi,
"111.2.3.4": pravi,
"::1": pravi,
}

funkglavni() {
usmjerivač := gin. Zadano()

ruter. DOBITI("/indeks", funk(c *gin. Kontekst) {
c. JSON(http. Status OK, gin. H{
"poruka": "Dobro došli u moju sigurnu aplikaciju!",
})
})

restrictedPage := usmjerivač. Skupina("/")
ograničenastranica. Upotreba (middlewares. IPWhiteListMiddleware (IPWhitelist))

ograničenastranica. DOBITI("/adminZone", funk(c *gin. Kontekst) {
c. JSON(http. Status OK, gin. H{
"poruka": "Ova je krajnja točka zaštićena popisom dopuštenih IP adresa!",
})
})

ruter. Trčanje(":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 krajnju točku, da vidite kako međuopreme radi. Također možete mijenjati vrijednost IP-a lokalnog hosta na popisu dopuštenih između pravi i lažno.

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:

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

Možete dobiti odgovor o pogrešci 403 (zabranjeno) ako testirate program stavljanjem na popis dopuštenih generičke lokalne IP adrese (127.0.0.1). IP adresa koja će najvjerojatnije raditi lokalno je ::1 što je IPv6 ekvivalent 127.0.0.1 (Ipv4). Pokušajte staviti na popis dopuštenih ::1 ako 127.0.0.1 odbije raditi, a možete također pokušati prijaviti userIP varijablu u konzoli da vidite točnu adresu koja se koristi.

Zaštita web-aplikacija s IP dopuštenim popisom

U današnjem svijetu sigurnost web aplikacija i sustava od najveće je važnosti jer tehnologija neprestano napreduje. Popis IP dopuštenih vrlo je jednostavan i učinkovit način za ograničavanje pristupa resursima na internetu samo pouzdanim izvorima.

Do sada je u ovom članku detaljno obrađen koncept popisa dopuštenih IP adresa, kada ga implementirati i kako ga implementirati u Go koristeći okvir Gin. Preporuča se implementacija popisa dopuštenih IP adresa samo tamo gdje je to prikladno kako bi se izbjegli nepotrebni tehnički troškovi.