Protegendo aplicativos da Web Golang usando lista de permissões de IP

Protegendo aplicativos da Web Golang usando lista de permissões de IP
Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

No reino moderno da tecnologia da Internet, a importância de garantir a segurança dos aplicativos e servidores da Web não pode ser exagerada, pois a frequência e a sofisticação dos ataques cibernéticos continuam a aumentar. Por causa disso, a necessidade de medidas de segurança robustas e de ponta para sistemas baseados na Web também está aumentando.





MAKEUSEDO VÍDEO DO DIA ROLE PARA CONTINUAR COM O CONTEÚDO

A lista branca de endereços IP é uma das muitas técnicas modernas para proteger aplicativos da Web, servidores e APIs. Embora seja utilizado apenas em alguns casos específicos, é uma forma recomendada de garantir a restrição de acesso a recursos da internet quando necessário.





O que é lista branca de IP?

A lista de permissões de IP é simplesmente uma tipo de lista branca que pode ser referido como uma medida de segurança da web usada para restringir o acesso a uma rede ou recurso a um endereço IP definido ou intervalo de endereços IP considerados autorizados a acessar o sistema.





como ver seus gostos na videira

Quando a lista branca de IP é implementada em um sistema, apenas os endereços IP adicionados à lista branca podem acessar o sistema e os recursos nele contidos, enquanto outros endereços IP são bloqueados.

A lista de permissões de IP é uma forma muito comum de proteger dados muito críticos que devem estar disponíveis apenas para um indivíduo ou um determinado conjunto de pessoas e protegidos contra qualquer tentativa de hacking.



Um exemplo comum de lista de permissões de IP está no MongoDB Atlas, onde você configurar um cluster de banco de dados Mongo na nuvem e você será solicitado a adicionar seu endereço IP atual a uma lista para que as solicitações para seu banco de dados ou cluster sejam permitidas apenas quando vierem de seu computador.

Quando você deve implementar a lista de permissões de IP?

A lista de permissões de IP não é algo que todo sistema ou aplicativo precisa. Existem casos em que é recomendável e adequado implementá-lo em um aplicativo ou sistema. A seguir estão alguns exemplos de cenários em que você deve considerar a implementação de uma lista de permissões de IP.





  • Quando o aplicativo é destinado apenas para uso por um grupo específico de usuários, como funcionários ou clientes de uma determinada empresa.
  • Quando você deseja que o aplicativo seja acessível apenas a partir de um local específico, pode colocar na lista de permissões um intervalo de endereços IP específicos apenas para esse local.
  • Quando o aplicativo é usado para fornecer acesso a informações confidenciais ou propriedade intelectual, como um banco de dados de pesquisa ou software proprietário.
  • Quando o aplicativo é privado, mas acessível pela Internet e precisa ser protegido contra ameaças externas, como ataques DDoS ou infecções por malware.
  • Quando o aplicativo está hospedado em uma plataforma de nuvem pública e precisa ser protegido contra acesso não autorizado por outros locatários ou usuários da plataforma.
  • Quando o aplicativo é usado em um setor regulamentado, como saúde ou finanças, onde é necessária a conformidade com os padrões de segurança.

Existem muitos outros casos, mas fundamentalmente, sempre que um aplicativo tiver qualquer uma das propriedades mencionadas acima, você deve considerar a implementação de uma lista de permissões de IP.

Como implementar a lista de permissões de IP em Go

Go é uma linguagem de programação moderna popular para construir servidores web e APIs agrupadas com tudo o que você precisa para criar um aplicativo da Web padrão e seguro.





Esta seção demonstra o uso da estrutura Gin do Go para implementar o servidor de amostra e a lógica de lista de permissões de IP, que é uma função de middleware. Você pode instalar a estrutura do Gin em um projeto executando o seguinte comando.

como fechar uma janela sem o mouse
 go get github.com/gin-gonic/gin 

Depois de instalar a estrutura do Gin, agora você pode implementar o middleware de lista de permissões de IP. Você pode criar um novo arquivo de middleware em qualquer lugar do seu projeto, dependendo da arquitetura do seu projeto. Aqui está a implementação da função de 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()
        }
    }
}

No código acima, o IPWhiteListMiddleware A função é definida para aceitar uma lista branca de endereço IP definida como um argumento. A lista branca é implementada como uma estrutura de dados de mapa para que os endereços IP possam ser facilmente atribuídos a valores de verdadeiro e falso para indicar sua acessibilidade.

Em seguida, a função usa o framework Gin ClientIP função para obter o endereço IP atual do usuário que está tentando fazer a solicitação e verifica se ele está presente na lista de permissões e com um verdadeiro valor. Se não for encontrado, ou se for encontrado um valor de falso , o middleware aborta a solicitação e retorna um erro 403 (Proibido).

como eu acelero meu streaming de vídeo

Um endpoint de exemplo para testar essa funcionalidade pode ser implementado para ver como funciona a lista de permissões de IP. O código a seguir é um programa que define uma lista de permissões e implementa dois endpoints (um restrito e um irrestrito).

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

Quando o aplicativo é executado com vá correr main.go , o servidor inicia na porta 3333 e você pode executar solicitações de teste para o /adminZone endpoint, para ver como o middleware funciona. Você também pode alternar o valor do IP do host local na lista de permissões entre verdadeiro e falso .

Aqui está um exemplo de solicitação para mostrar quando o endereço IP não está na lista de permissões ou quando seu valor na lista de permissões está definido como falso :

  Solicitação de teste para quando o endereço IP não estiver na lista de permissões

Aqui está outra solicitação para quando o endereço IP estiver presente na lista de permissões de IP com seu valor definido como verdadeiro :

  Solicitação de teste para quando o endereço IP estiver na lista de permissões