Eu achei inseguro deixar nossa senha de MySQL digitada diretamente no código. É possível acessar nossa conta de uma maneira que não a exponha?
Eu achei inseguro deixar nossa senha de MySQL digitada diretamente no código. É possível acessar nossa conta de uma maneira que não a exponha?
Olá! Tudo bem? É uma boa prática deixarmos informações sensíveis da nossa aplicação fora do código, uma das melhores formas de fazer isso é usando variáveis de ambiente, que são variáveis que podemos deixar disponíveis no ambiente que estamos trabalhando, normalmente a nossa máquina. Uma forma bem prática de fazer isso é usando arquivos .env:
# arquivo .env
SENHA_MYSQL=root
Esse tipo de arquivo é um padrão comum, onde armazenamos informações sensíveis e depois carregamos essa informação para o ambiente com o auxílio de bibliotecas, por exemplo a python-dotenv: (Instalação via terminal com pip)
python -m pip install python-dotenv
Com essa biblioteca instalada, você pode acessar as variáveis do .env dessa forma:
import os
from dotenv import load_dotenv
# Carrega as variáveis
load_dotenv()
# Acessa a variável pela biblioteca os (operational system)
senha_mysql = os.environ.get("SENHA_MYSQL")
Depois, basta colocar .env no seu arquivo .gitignore se estiver usando o github para armazenar seu código, para não deixar informações sensíveis na internet. Se preferir, também é possível não usar o arquivo .env, e ao invés disso definir as variáveis no terminal do seu computador:
para Linux
export SENHA_MYSQL=root
para Windows
set SENHA_MYSQL=root
E então acessar diretamente no código, sem precisar da python-dotenv:
import os
# Acessa a variável diretamente
senha_mysql = os.environ.get("SENHA_MYSQL")
O problema dessa abordagem é que as variáveis vão ser armazenadas de forma temporária, então se você fechar o terminal e abrir de novo pode ser que ela não esteja mais disponível, então vai ser preciso usar esse comando todas as vezes que você for usar a aplicação. Porém, essa abordagem é a mais usada em ambiente de produção, onde você pode definir essas variáveis de forma permanente na máquina do servidor com comandos do tipo:
setx SENHA_MYSQL root
O comando setx define variáveis de forma permanente, mas é bom evitar esse tipo de comando se você estiver usando sua máquina pessoal, porque variáveis de ambiente podem causar algumas complicações se não forem definidas com cuidado. Espero ter ajudado!