Executando verificação de segurança...
1

Uma dúvida sobre open-source e informações sensíveis no código.

Eu quero criar um software open source em django, no entanto no django ao conectar no banco de dádos colocamos diversas informações sensiveis que caso sejam publicadas em um repositório publico poderiam ocasionar em um acesso indesejado ao banco de dados. Como posso ocultar essa informação sensivel, vi que no caso do tabnews eles usam o seguinte código:

const configurations = {
user: process.env.POSTGRES_USER,
host: process.env.POSTGRES_HOST,
database: process.env.POSTGRES_DB,
password: process.env.POSTGRES_PASSWORD,
port: process.env.POSTGRES_PORT,
connectionTimeoutMillis: 1000,
idleTimeoutMillis: 30000,
max: 1,
ssl: {
rejectUnauthorized: false,
},
allowExitOnIdle: true,
};

Sou novo no ramo, e não consegui achar essa informação em lugar nenhum, então creio que posso ajudar pessoas com essa mesma dúvida.

Carregando publicação patrocinada...
3

Isso se chama variáveis de ambiente, que são variáveis que só existem no ambiente de execução do código. No caso do ecossistema node utilizamos a lib dotenv, que carrega todas as variáveis de um arquivo chamado .env. Que é o que aparece aí no código do tabnews. Em javascript você pode acessá-las por meio da variável process.env.(nome da variavel), em Python tbm temos isso, que é por meio do módulo os.

Para carregar as variáveis de ambiente existe uma biblioteca chamada python-dotenv que atua praticamente da mesma forma que o dotenv do node. Você pode instalar com o pip: pip install python-dotenv.

O que você precisa fazer é criar um arquivo .env, que tem a seguinte sintaxe:

INFO_SENSIVEL=NAO_QUERO_COMMITAR_ISSO
SENHA_DO_SERVICO=123455

O arquivo deve estar na raiz do projeto, depois disso basta utilizar o módulo python-dotenv:

from dotenv import load_dotenv

load_dotenv()

# Resto do seu código
1
1

Complementando a resposta do @gabrielTepes ...

você tem que colocar no seu .gitignore a linha .env, assim você não envia pro git seu arquivo com suas senhas.

geralmente voce cria um .env.example e esse você versiona, assim quem clonar seu repositório sabe quais são as variáveis que ele tem que preencher para o programa funcionar.

dai esse ser humano renomeia de .env.examplo, preenche suas proprias informações e essas bibliotecas cuidam de ler esse arquivo e disponibilizar essas informações