Informações confidenciais seguras no Django no GitHub

Vaibhav Vaibhav 11 julho 2021
Informações confidenciais seguras no Django no GitHub

Construir projetos e software e compartilhá-los com o mundo no GitHub é um processo divertido e empolgante. Gostamos de adicionar recursos interessantes e atraentes aos nossos aplicativos e enviar o código para o GitHub usando o git. Ainda assim, às vezes tendemos a esquecer um dos aspectos mais críticos do desenvolvimento de software: segurança.

Ao construir software, temos que garantir que o software seja seguro e não tenha brechas potenciais para uma violação de dados.

Django, a estrutura da web, vem com segurança robusta. O sistema de autenticação do Django é poderoso. Django tem um settings.py onde a maioria dos dados sensíveis estão presentes. Portanto, armazenar esse arquivo no GitHub pode ser uma decisão perigosa.

Mas não se preocupe. Existem algumas maneiras de enviar o código ao GitHub e, ao mesmo tempo, garantir a segurança.

Proteja informações confidenciais no Django usando variáveis ​​de ambiente

Variáveis ​​de ambiente são algumas variáveis ​​cujos valores são armazenados fora do programa e são lidos a partir do programa para acessar as informações. Essas variáveis ​​são armazenadas em um arquivo .env.

Primeiro, crie um arquivo .env. Então, dentro do arquivo .gitignore, adicione .env. Essa adição garantirá que o arquivo .env não seja carregado no GitHub.

Agora você precisará de um pacote Python para lidar com esses arquivos. O nome do pacote é Decouple. Use o seguinte comando pip para instalar o pacote.

pip install python-decouple

Ou,

pip3 install python-decouple

Dentro do arquivo .env, adicione as informações confidenciais. Essas informações podem ser a chave secreta do seu projeto Django, suas credenciais de banco de dados, seu id de e-mail e senha, suas chaves de API, etc. O pacote Decouple Python procurará automaticamente por esse arquivo dentro do projeto Django.

Armazene as informações da seguinte maneira. Certifique-se de seguir a mesma sintaxe: sem espaços antes e depois do sinal = e sem aspas adicionadas para representar as strings.

SECRET_KEY=abcdefghijklmnopqrstuvwxyz0123456789
DEBUG=True
DATABASE_NAME=HELLO_DJANGO
DATABASE_USERNAME=U_HELLO
DATABASE_PASSWORD=hA8(scA@!fg3*sc&xaGh&6%-l<._&xCf
DATABASE_HOST=127.0.0.1
DATABASE_PORT=127.0.0.1
WASD_API_KEY=abcdefghijklmnopqrstuvwxyz0123456789
PQRS_API_KEY=abcdefghijklmnopqrstuvwxyz0123456789
EMAIL=qwerty@wasd.com
PASSWORD=abcdefghijklmnopqrstuvwxyz0123456789

Conforme mencionado acima, geralmente e devemos manter todos os dados confidenciais no arquivo settings.py. Faremos o mesmo aqui também, mas não adicionaremos os valores diretamente. Iremos lê-los neste .env que acabamos de criar.

Dentro de settings.py, podemos recuperar os valores acima da seguinte forma.

import os
from decouple import config

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SECRET_KEY = config("SECRET_KEY")  # Here
DEBUG = config("DEBUG", cast=bool)  # Here
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql_psycopg2",
        "NAME": config("DATABASE_NAME"),  # Here
        "USER": config("DATABASE_USERNAME"),  # Here
        "PASSWORD": config("DATABASE_PASSWORD"),  # Here
        "HOST": config("DATABASE_HOST"),  # Here
        "PORT": config("DATABASE_PORT", cast=int),  # Here
    }
}
WASD_API_KEY = config("WASD_API_KEY")
PQRS_API_KEY = config("PQRS_API_KEY")
EMAIL = config("EMAIL")
PASSWORD = config("PASSWORD")

config tem um parâmetro cast que define para qual tipo de dados o valor deve ser convertido. Por padrão, o Decouple lê todos os valores como strings. Portanto, este parâmetro cast pode ser usado para converter os valores para o tipo de dados desejado.

É isso. Agora, todos os dados confidenciais estão seguros em um arquivo .env e, contanto que você não faça upload desse arquivo para o GitHub, as informações estarão seguras. Além disso, o projeto também não vai quebrar porque as variáveis ​​estão intactas onde estavam anteriormente. A única coisa que mudou é a maneira como atribuímos valores a eles.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.