Melindungi Aplikasi Web Golang Menggunakan Penyenaraian Putih IP

Melindungi Aplikasi Web Golang Menggunakan Penyenaraian Putih IP
Pembaca seperti anda membantu menyokong MUO. Apabila anda membuat pembelian menggunakan pautan di tapak kami, kami mungkin mendapat komisen ahli gabungan. Baca Lagi.

Dalam alam moden teknologi internet, kepentingan memastikan keselamatan aplikasi web dan pelayan tidak boleh dipertikaikan kerana kekerapan dan kecanggihan serangan siber terus meningkat. Oleh sebab itu, keperluan untuk langkah keselamatan yang teguh dan canggih untuk sistem berasaskan web juga semakin meningkat.





MAKEUSEOF VIDEO OF THE DAY SCROLL UNTUK MENERUSKAN KANDUNGAN

Penyenaraian putih alamat IP ialah salah satu daripada banyak teknik moden untuk mengamankan aplikasi web, pelayan dan API. Walaupun ia hanya digunakan dalam beberapa kes tertentu, ia adalah cara yang disyorkan untuk memastikan sekatan akses kepada sumber di internet apabila diperlukan.





Apakah Penyenaraian Putih IP?

Penyenaraian putih IP hanyalah a jenis senarai putih yang boleh dirujuk sebagai langkah keselamatan web yang digunakan untuk menyekat akses kepada rangkaian atau sumber kepada alamat IP yang ditentukan atau julat alamat IP yang dianggap dibenarkan untuk mengakses sistem.





Apabila penyenaraian putih IP dilaksanakan dalam sistem, hanya alamat IP yang ditambahkan pada senarai putih dapat mengakses sistem dan sumber padanya, manakala alamat IP lain disekat.

Penyenaraian putih IP ialah cara yang sangat biasa untuk mendapatkan data yang sangat kritikal yang sepatutnya tersedia kepada individu atau kumpulan orang tertentu sahaja dan dilindungi daripada sebarang percubaan penggodaman.



Contoh biasa penyenaraian putih IP adalah dalam MongoDB Atlas di mana anda sediakan kluster pangkalan data Mongo dalam awan dan anda digesa untuk menambah alamat IP semasa anda pada senarai supaya permintaan ke pangkalan data atau kluster anda hanya dibenarkan apabila ia datang dari komputer anda.

Bilakah Anda Harus Melaksanakan Penyenaraian Putih IP?

Penyenaraian putih IP bukanlah sesuatu yang diperlukan oleh setiap sistem atau aplikasi. Terdapat kes di mana ia disyorkan dan sesuai untuk melaksanakannya dalam aplikasi atau sistem. Berikut ialah beberapa contoh senario di mana anda harus mempertimbangkan untuk melaksanakan senarai putih IP.





  • Apabila aplikasi hanya bertujuan untuk digunakan oleh kumpulan pengguna tertentu, seperti pekerja atau pelanggan syarikat tertentu.
  • Apabila anda mahu aplikasi hanya boleh diakses dari lokasi tertentu, anda boleh menyenarai putih julat alamat IP khusus untuk lokasi itu sahaja.
  • Apabila aplikasi digunakan untuk menyediakan akses kepada maklumat sulit atau harta intelek, seperti pangkalan data penyelidikan atau perisian proprietari.
  • Apabila aplikasi adalah peribadi tetapi boleh diakses melalui internet dan perlu dilindungi daripada ancaman luar, seperti serangan DDoS atau jangkitan perisian hasad.
  • Apabila aplikasi dihoskan pada platform awan awam dan perlu dilindungi daripada akses tanpa kebenaran oleh penyewa atau pengguna platform lain.
  • Apabila aplikasi digunakan dalam industri terkawal, seperti penjagaan kesihatan atau kewangan, di mana pematuhan piawaian keselamatan diperlukan.

Terdapat banyak lagi kes, tetapi pada asasnya, apabila aplikasi mempunyai mana-mana sifat yang dinyatakan di atas, maka anda harus mempertimbangkan untuk melaksanakan senarai putih IP.

Cara Melaksanakan Penyenaraian Putih IP dalam Go

Go ialah bahasa pengaturcaraan moden yang popular untuk membina pelayan web dan API digabungkan dengan semua yang anda perlukan untuk membina aplikasi web yang standard dan selamat.





Bahagian ini menunjukkan penggunaan rangka kerja Gin Go untuk melaksanakan pelayan sampel dan logik penyenaraian putih IP yang merupakan fungsi perisian tengah. Anda boleh memasang rangka kerja Gin dalam projek dengan menjalankan arahan berikut.

 go get github.com/gin-gonic/gin 

Selepas memasang rangka kerja Gin, anda kini boleh meneruskan untuk melaksanakan perisian tengah penyenaraian putih IP. Anda boleh mencipta fail middleware baharu di mana-mana sahaja dalam projek anda, bergantung pada seni bina projek anda. Berikut ialah pelaksanaan fungsi middleware:

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

Dalam kod di atas, the IPHiteListMiddleware fungsi ditakrifkan untuk menerima senarai putih alamat IP yang ditetapkan sebagai hujah. Senarai putih dilaksanakan sebagai struktur data peta supaya alamat IP boleh diberikan nilai dengan mudah benar dan salah untuk menunjukkan kebolehcapaian mereka.

Kemudian fungsi menggunakan rangka kerja Gin ClientIP berfungsi untuk mendapatkan alamat IP semasa pengguna yang cuba membuat permintaan, dan menyemak sama ada ia terdapat dalam senarai putih dan dengan benar nilai. Jika ia tidak ditemui, atau didapati mempunyai nilai salah , middleware membatalkan permintaan dan mengembalikan ralat 403 (Dilarang).

Titik akhir sampel untuk menguji fungsi ini boleh dilaksanakan untuk melihat cara senarai putih IP berfungsi. Kod berikut ialah program yang mentakrifkan senarai putih dan melaksanakan dua titik akhir (satu terhad dan satu tidak terhad).

cara membuang pemacu google dari komputer
 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")
}

Apabila aplikasi dijalankan dengan pergi lari main.go , pelayan bermula pada port 3333, dan anda boleh menjalankan permintaan ujian ke /adminZone titik akhir, untuk melihat cara perisian tengah berfungsi. Anda juga boleh menogol nilai IP localhost dalam senarai putih antara benar dan salah .

Berikut ialah contoh permintaan untuk ditunjukkan apabila alamat IP tidak disenarai putih atau apabila nilainya dalam senarai putih ditetapkan kepada salah :

  Permintaan ujian apabila alamat IP tidak disenarai putih

Berikut ialah satu lagi permintaan apabila alamat IP terdapat dalam senarai putih IP dengan nilainya ditetapkan kepada benar :

  Permintaan ujian apabila alamat IP disenarai putih