Pag-secure ng mga Golang Web Application Gamit ang IP Whitelisting

Pag-secure ng mga Golang Web Application Gamit ang IP Whitelisting
Ang mga mambabasang tulad mo ay tumutulong sa pagsuporta sa MUO. Kapag bumili ka gamit ang mga link sa aming site, maaari kaming makakuha ng isang affiliate na komisyon. Magbasa pa.

Sa modernong larangan ng teknolohiya sa internet, ang kahalagahan ng pagtiyak sa kaligtasan ng mga web application at server ay hindi maaaring palakihin habang ang dalas at pagiging sopistikado ng mga cyber-attack ay patuloy na tumataas. Dahil dito, tumataas din ang pangangailangan para sa matatag at makabagong mga hakbang sa seguridad para sa mga web-based na system.





MAKEUSEOF VIDEO OF THE DAY MAG-SCROLL PARA MAGPATULOY SA NILALAMAN

Ang pag-whitelist ng IP address ay isa sa maraming modernong pamamaraan para sa pag-secure ng mga web application, server, at API. Bagama't ginagamit lamang ito sa ilang partikular na kaso, ito ay isang inirerekomendang paraan ng pagtiyak ng paghihigpit sa pag-access sa mga mapagkukunan sa internet kapag kinakailangan.





Ano ang IP Whitelisting?

Ang IP whitelisting ay isang uri ng whitelisting na maaaring tukuyin bilang isang hakbang sa seguridad sa web na ginagamit upang paghigpitan ang pag-access sa isang network o mapagkukunan sa isang tinukoy na IP address o hanay ng mga IP address na itinuturing na awtorisadong mag-access sa system.





kung paano makahanap ng ipinagbibiling tuta

Kapag ipinatupad ang IP whitelisting sa isang system, tanging ang mga IP address na idinagdag sa whitelist ang makaka-access sa system at mga mapagkukunan dito, habang ang iba pang mga IP address ay naka-block.

Ang IP whitelisting ay isang pangkaraniwang paraan ng pag-secure ng napaka-kritikal na data na dapat ay magagamit lamang sa isang indibidwal o isang partikular na hanay ng mga tao, at protektado mula sa anumang pagtatangkang pag-hack.



Ang isang karaniwang halimbawa ng IP whitelisting ay nasa MongoDB Atlas kung saan ka mag-set up ng Mongo database cluster sa cloud at sinenyasan kang idagdag ang iyong kasalukuyang IP address sa isang listahan upang ang mga kahilingan sa iyong database o cluster ay pinapayagan lamang kapag nanggaling ang mga ito sa iyong computer.

Kailan Mo Dapat Ipatupad ang IP Whitelisting?

Ang IP whitelisting ay hindi isang bagay na kailangan ng bawat system o application. May mga kaso kung saan inirerekomenda at angkop na ipatupad ito sa isang aplikasyon o sistema. Ang sumusunod ay ilang halimbawa ng mga sitwasyon kung saan dapat mong isaalang-alang ang pagpapatupad ng IP whitelist.





  • Kapag ang application ay nilayon lamang para sa paggamit ng isang partikular na grupo ng mga user, gaya ng mga empleyado o mga customer ng isang partikular na kumpanya.
  • Kapag gusto mong ma-access lang ang application mula sa isang partikular na lokasyon, maaari mong i-whitelist ang isang hanay ng mga IP address na partikular sa lokasyong iyon lamang.
  • Kapag ginamit ang application upang magbigay ng access sa kumpidensyal na impormasyon o intelektwal na pag-aari, tulad ng database ng pananaliksik o pagmamay-ari na software.
  • Kapag pribado ang application ngunit naa-access sa internet at kailangang protektahan mula sa mga panlabas na banta, tulad ng mga pag-atake ng DDoS o mga impeksyon sa malware.
  • Kapag ang application ay naka-host sa isang pampublikong cloud platform at kailangang protektahan mula sa hindi awtorisadong pag-access ng ibang mga nangungupahan o mga gumagamit ng platform.
  • Kapag ginamit ang application sa isang kinokontrol na industriya, gaya ng pangangalaga sa kalusugan o pananalapi, kung saan kinakailangan ang pagsunod sa mga pamantayan sa seguridad.

Marami pang mga kaso, ngunit sa panimula, sa tuwing ang isang application ay may alinman sa mga katangian na nakasaad sa itaas, dapat mong isaalang-alang ang pagpapatupad ng isang IP whitelist.

Paano Ipatupad ang IP Whitelisting sa Go

Ang Go ay isang sikat na modernong programming language para sa pagbuo ng mga web server at mga API na kasama ng lahat ng kailangan mo para makabuo ng standard at secure na web application.





Ang seksyong ito ay nagpapakita ng paggamit ng Go's Gin framework upang ipatupad ang sample na server at IP whitelisting logic na isang middleware function. Maaari mong i-install ang framework ng Gin sa isang proyekto sa pamamagitan ng pagpapatakbo ng sumusunod na command.

 go get github.com/gin-gonic/gin 

Pagkatapos i-install ang framework ng Gin, maaari mo na ngayong ipatupad ang IP whitelisting middleware. Maaari kang lumikha ng bagong middleware file saanman sa iyong proyekto, depende sa iyong arkitektura ng proyekto. Narito ang pagpapatupad ng middleware function:

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

Sa code sa itaas, ang IPHiteListMiddleware function ay tinukoy upang tanggapin ang isang tinukoy na IP address whitelist bilang isang argumento. Ang whitelist ay ipinatupad bilang isang istraktura ng data ng mapa upang ang mga IP address ay madaling maitatalaga ng mga halaga ng totoo at mali upang ipahiwatig ang kanilang pagiging naa-access.

Pagkatapos ay ginagamit ng function ang framework ng Gin ClientIP function upang makuha ang kasalukuyang IP address ng user na sumusubok na gawin ang kahilingan, at suriin kung ito ay naroroon sa whitelist at may totoo halaga. Kung hindi ito nahanap, o napag-alamang may halaga ito ng mali , ina-abort ng middleware ang kahilingan at nagbabalik ng 403 error (Bawal).

Ang isang sample na endpoint upang subukan ang functionality na ito ay maaaring ipatupad upang makita kung paano gumagana ang IP whitelist. Ang sumusunod na code ay isang programa na tumutukoy sa isang whitelist at nagpapatupad ng dalawang endpoint (isang pinaghihigpitan at isang hindi pinaghihigpitan).

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

Kapag ang application ay tumakbo sa go run main.go , magsisimula ang server sa port 3333, at maaari kang magpatakbo ng mga kahilingan sa pagsubok sa /adminZone endpoint, upang makita kung paano gumagana ang middleware. Maaari mo ring i-toggle ang halaga ng localhost IP sa whitelist sa pagitan totoo at mali .

Narito ang isang sample na kahilingan upang ipakita kapag ang IP address ay hindi naka-whitelist o kapag ang halaga nito sa whitelist ay nakatakda sa mali :

  Paghiling ng pagsubok kung kailan hindi naka-whitelist ang IP address

Narito ang isa pang kahilingan kung kailan naroroon ang IP address sa whitelist ng IP kung saan nakatakda ang value nito totoo :

  Paghiling ng pagsubok kung kailan naka-whitelist ang IP address