Bảo mật các ứng dụng web Golang bằng danh sách trắng IP

Bảo mật các ứng dụng web Golang bằng danh sách trắng IP
Độc giả như bạn giúp hỗ trợ MUO. Khi bạn mua hàng bằng các liên kết trên trang web của chúng tôi, chúng tôi có thể kiếm được hoa hồng liên kết. Đọc thêm.

Trong lĩnh vực công nghệ internet hiện đại, không thể phóng đại tầm quan trọng của việc đảm bảo an toàn cho các ứng dụng web và máy chủ khi tần suất và mức độ phức tạp của các cuộc tấn công mạng tiếp tục gia tăng. Do đó, nhu cầu về các biện pháp bảo mật tiên tiến và mạnh mẽ cho các hệ thống dựa trên web cũng đang gia tăng.





LÀM VIDEO TRONG NGÀY CUỘN ĐỂ TIẾP TỤC VỚI NỘI DUNG

Danh sách trắng địa chỉ IP là một trong nhiều kỹ thuật hiện đại để bảo mật các ứng dụng web, máy chủ và API. Mặc dù nó chỉ được sử dụng trong một số trường hợp cụ thể, nhưng đây là cách được khuyến nghị để đảm bảo hạn chế quyền truy cập vào tài nguyên trên internet khi cần thiết.





cách cải thiện hiệu suất chơi game của máy tính xách tay windows 10

Danh sách trắng IP là gì?

Danh sách trắng IP chỉ đơn giản là một loại danh sách trắng có thể được gọi là biện pháp bảo mật web được sử dụng để hạn chế quyền truy cập vào mạng hoặc tài nguyên đối với địa chỉ IP đã xác định hoặc dải địa chỉ IP được coi là được phép truy cập hệ thống.





Khi danh sách trắng IP được triển khai trong một hệ thống, chỉ những địa chỉ IP được thêm vào danh sách trắng mới có thể truy cập hệ thống và tài nguyên trên đó, trong khi các địa chỉ IP khác bị chặn.

Danh sách trắng IP là một cách rất phổ biến để bảo mật dữ liệu rất quan trọng chỉ dành cho một cá nhân hoặc một nhóm người nhất định và được bảo vệ khỏi mọi nỗ lực hack.



Một ví dụ phổ biến về danh sách trắng IP là trong MongoDB Atlas nơi bạn thiết lập cụm cơ sở dữ liệu Mongo trên đám mây và bạn được nhắc thêm địa chỉ IP hiện tại của mình vào danh sách để các yêu cầu đối với cơ sở dữ liệu hoặc cụm của bạn chỉ được phép khi chúng đến từ máy tính của bạn.

Khi nào bạn nên triển khai danh sách trắng IP?

Danh sách trắng IP không phải là thứ mà mọi hệ thống hoặc ứng dụng đều cần. Có những trường hợp nên triển khai nó trong một ứng dụng hoặc hệ thống. Sau đây là một số ví dụ về các tình huống mà bạn nên xem xét triển khai danh sách trắng IP.





  • Khi ứng dụng chỉ dành cho một nhóm người dùng cụ thể, chẳng hạn như nhân viên hoặc khách hàng của một công ty cụ thể.
  • Khi bạn muốn ứng dụng chỉ có thể truy cập được từ một vị trí cụ thể, bạn có thể đưa vào danh sách trắng một dải địa chỉ IP chỉ dành riêng cho vị trí đó.
  • Khi ứng dụng được sử dụng để cung cấp quyền truy cập vào thông tin bí mật hoặc tài sản trí tuệ, chẳng hạn như cơ sở dữ liệu nghiên cứu hoặc phần mềm độc quyền.
  • Khi ứng dụng ở chế độ riêng tư nhưng có thể truy cập qua internet và cần được bảo vệ khỏi các mối đe dọa bên ngoài, chẳng hạn như tấn công DDoS hoặc nhiễm phần mềm độc hại.
  • Khi ứng dụng được lưu trữ trên nền tảng đám mây công cộng và cần được bảo vệ khỏi sự truy cập trái phép của những người thuê hoặc người dùng nền tảng khác.
  • Khi ứng dụng được sử dụng trong một ngành được quản lý, chẳng hạn như chăm sóc sức khỏe hoặc tài chính, nơi yêu cầu tuân thủ các tiêu chuẩn bảo mật.

Còn nhiều trường hợp nữa, nhưng về cơ bản, bất cứ khi nào ứng dụng có bất kỳ thuộc tính nào nêu trên, thì bạn nên xem xét triển khai danh sách trắng IP.

Cách triển khai danh sách trắng IP trong Go

Go là một ngôn ngữ lập trình hiện đại phổ biến để xây dựng các máy chủ web và các API đi kèm với tất cả những gì bạn cần để xây dựng một ứng dụng web tiêu chuẩn và an toàn.





Phần này trình bày việc sử dụng khung công tác Go's Gin để triển khai máy chủ mẫu và logic danh sách trắng IP, đây là một chức năng của phần mềm trung gian. Bạn có thể cài đặt khung Gin trong một dự án bằng cách chạy lệnh sau.

 go get github.com/gin-gonic/gin 

Sau khi cài đặt khung Gin, bây giờ bạn có thể tiếp tục triển khai phần mềm trung gian danh sách trắng IP. Bạn có thể tạo một tệp phần mềm trung gian mới ở bất kỳ đâu trong dự án của mình, tùy thuộc vào kiến ​​trúc dự án của bạn. Đây là cách triển khai chức năng phần mềm trung gian:

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

Trong đoạn mã trên, IPWhiteListMiddleware chức năng được xác định để chấp nhận danh sách trắng địa chỉ IP được xác định làm đối số. Danh sách trắng được triển khai dưới dạng cấu trúc dữ liệu bản đồ để địa chỉ IP có thể dễ dàng được gán các giá trị của ĐÚNG VẬY SAI để chỉ ra khả năng truy cập của họ.

Sau đó, chức năng sử dụng khuôn khổ Gin Khách hàngIP chức năng lấy địa chỉ IP hiện tại của người dùng đang cố gắng thực hiện yêu cầu và kiểm tra xem địa chỉ đó có trong danh sách trắng hay không và có ĐÚNG VẬY giá trị. Nếu nó không được tìm thấy, hoặc nó được tìm thấy có giá trị SAI , phần mềm trung gian sẽ hủy yêu cầu và trả về lỗi 403 (Bị cấm).

Có thể triển khai một điểm cuối mẫu để kiểm tra chức năng này để xem danh sách trắng IP hoạt động như thế nào. Đoạn mã sau là một chương trình xác định danh sách trắng và triển khai hai điểm cuối (một điểm bị hạn chế và một điểm không bị hạn chế).

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

Khi ứng dụng được chạy với đi chạy main.go , máy chủ khởi động trên cổng 3333 và bạn có thể chạy các yêu cầu kiểm tra tới /adminZone điểm cuối, để xem phần mềm trung gian hoạt động như thế nào. Bạn cũng có thể chuyển đổi giá trị của IP máy chủ cục bộ trong danh sách trắng giữa ĐÚNG VẬY SAI .

Đây là một yêu cầu mẫu để hiển thị khi địa chỉ IP không có trong danh sách trắng hoặc khi giá trị của nó trong danh sách trắng được đặt thành SAI :

sao chép nhạc từ ipod sang máy tính
  Yêu cầu kiểm tra khi địa chỉ IP không được đưa vào danh sách trắng

Đây là một yêu cầu khác khi địa chỉ IP có trong danh sách trắng IP với giá trị được đặt thành ĐÚNG VẬY :

  Yêu cầu kiểm tra thời điểm địa chỉ IP được đưa vào danh sách trắng