/ / 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

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.


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.


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 một đị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 tới cơ sở dữ liệu hoặc cụm của bạn chỉ được phép khi chúng đến từ bạn. máy tính.

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à ngôn ngữ lập trình hiện đại phổ biến để xây dựng các máy chủ web và 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ẬYSAI để 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ị SAIphầ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("https://www.smartreviewaz.com/")
    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.gomá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ẬYSAI.

Đâ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:

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

Bạn có thể nhận được phản hồi lỗi 403 (Bị cấm) nếu bạn kiểm tra chương trình bằng cách đưa địa chỉ IP localhost chung vào danh sách trắng (127.0.0.1). Địa chỉ IP rất có thể sẽ hoạt động cục bộ là ::1 tương đương với IPv6 của 127.0.0.1 (Ipv4). thử đưa vào danh sách trắng ::1 nếu 127.0.0.1 từ chối hoạt động và bạn cũng có thể thử đăng nhập userIP biến trong bảng điều khiển để xem địa chỉ chính xác đang được sử dụng.

Bảo mật ứng dụng web với danh sách trắng IP

Trong thế giới ngày nay, tính bảo mật của các ứng dụng và hệ thống web là vô cùng quan trọng khi công nghệ không ngừng phát triển. Danh sách trắng IP là một cách rất đơn giản và hiệu quả để hạn chế quyền truy cập vào các tài nguyên trên internet chỉ đối với các nguồn đáng tin cậy.

Cho đến nay trong bài viết này, khái niệm danh sách trắng địa chỉ IP đã được đề cập chi tiết, thời điểm triển khai và cách triển khai trong Go bằng cách sử dụng khung Gin. Bạn chỉ nên triển khai danh sách trắng IP khi thích hợp để tránh các chi phí kỹ thuật không cần thiết.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *