Manter suas chaves privadas fora dos repositórios de código é vital para a segurança. Descubra como fazer isso e como se recuperar caso já tenha cometido o erro.
No Django, uma chave secreta desempenha um papel vital no aprimoramento da segurança de seu aplicativo. Ele ajuda a gerenciar as sessões do usuário, protege contra ataques de falsificação de solicitação entre sites (CSRF) e protege seus dados gerando e verificando assinaturas criptográficas, entre outras coisas.
Você deve manter a chave secreta do seu projeto segura o tempo todo. Expor isso deixará seu aplicativo suscetível a ataques maliciosos de hackers, comprometendo sua segurança. Se sua chave secreta for comprometida, você deve saber como gerar uma nova para reduzir o impacto negativo em seu aplicativo.
Como sua chave secreta do Django pode ser exposta?
Você pode acidentalmente tornar sua chave secreta do Django pública se você a confirmar sem saber no git ou em um repositório de código-fonte semelhante. Este erro é comum entre os novos programadores que ainda estão
aprendendo sobre o GitHub. Quando isso acontece, você pode fazer um dos seguintes:- Exclua o commit.
- Substitua a chave secreta inteiramente.
Excluir a confirmação pode não ser a melhor opção porque o histórico de confirmação ainda pode ser acessado por vários meios, como cópias em cache no GitHub ou outros sistemas distribuídos. A coisa mais segura a fazer em tal situação é assumir que sua chave secreta já está comprometida.
Você deve gerar uma nova chave secreta para substituir a comprometida e protegê-la usando variáveis de ambiente. De qualquer forma, você deve aprender como gerar uma nova chave secreta no Django para proteger seu aplicativo de coisas como Ataques Cross-Site Request Forgery (CSRF).
Como gerar uma nova chave secreta no Django
O Django fornece uma função chamada get_random_secret_key() que o ajuda a gerar uma nova chave secreta sempre que você a chama. A função get_random_secret_key() é uma função utilitária que usa o segredos módulo em Python para gerar uma chave secreta segura de 50 caracteres.
Para gerar uma nova chave secreta com a função get_random_secret_key(), abra seu Interface de linha de comando (CLI) e digite este comando:
python manage.py shell -c "de django.core.management.utils import get_random_secret_key; imprimir (get_random_secret_key())"
O comando acima importa a função get_random_secret_key() de django.core.management.utils e então imprime uma nova chave secreta de 50 caracteres, que você pode usar em seu projeto. Antes de executar o comando acima, verifique se você está no diretório raiz do seu projeto, ou seja, no mesmo local do manage.py arquivo em seu projeto.
Você pode executar o mesmo comando fora de sua CLI criando um arquivo Python e colando este trecho de código nele:
# importe a função get_random_secret_key()
de django.core.management.utils importar get_random_secret_key
secret_key = get_random_secret_key()
imprimir (chave_secreta)
Você pode executar o código digitando isto em sua CLI:
python nome do arquivo.py
O comando acima deve imprimir uma nova chave secreta de 50 caracteres que você pode usar em seu projeto.
Como proteger sua chave secreta com variáveis de ambiente
Você provavelmente não quer mudar sua chave secreta toda vez que fizer um commit no GitHub. Uma maneira eficiente de manter sua chave secreta segura é armazená-la em uma variável de ambiente. As variáveis de ambiente são valores que você pode definir fora de sua base de código, que seu programa ainda pode acessar durante o tempo de execução. Eles podem armazenar configurações, chaves de API, credenciais de banco de dados, etc.
Você pode armazenar suas variáveis de ambiente em um arquivo chamado .env e excluí-las de seu repositório git. Você pode fazer isso criando um arquivo chamado .gitignore no seu projecto. O arquivo .gitignore contém uma lista de arquivos e pastas que o Git não rastreará.
Os tipos de arquivo e as estruturas de diretório variam de projeto para projeto, mas existem padrões sensatos que você pode aplicar para cada idioma. Você pode encontrar uma lista de modelos .gitignore em Repositório gitignore do GitHub. As etapas a seguir mostram como usar o arquivo .gitignore com variáveis de ambiente no Django.
1. Crie um arquivo .gitignore
No seu diretório base - a localização do seu manage.py arquivo - crie um .gitignore arquivo e copie o conteúdo deste arquivo GitHub afim disso. Esse arquivo é um exemplo de .gitignore para projetos Python que exclui arquivos comuns que você não deseja em seu repositório.
Como alternativa, você pode adicionar um arquivo .gitignore ao seu projeto enquanto cria um repositório no GitHub. Para isso, clique no Adicionar .gitignore opção, procure por Python e selecione-o.
2. Crie um arquivo .env
Em seu diretório base, crie um arquivo chamado .env. Este arquivo armazenará todas as suas variáveis de ambiente. Copie e cole sua chave secreta neste arquivo (remova as aspas e os espaços ao redor). Aqui está um exemplo:
SECRET_KEY=x#)_v1dtrlqvc61*025t^u4*-2h^kq&fmaw-ifgkppjxpyhh1%
Abra o .gitignore arquivo e confirme que o .env nome do arquivo está nele. Se não estiver, você pode adicioná-lo escrevendo o nome do arquivo sozinho em uma linha:
.env
3. Instale o pacote python-dotenv
Abra sua CLI e instale o python-dotenv pacote como uma dependência.
pip instalar python-dotenv
4. Modifique seu arquivo settings.py
Na tua settings.py arquivo, importe os seguintes pacotes:
importar os
de dotenv importar load_dotenv
Em seguida, carregue as variáveis de ambiente do seu .env arquivo em seu settings.py arquivo chamando o load_dotenv() função:
load_dotenv()
Finalmente, substitua o seu CHAVE SECRETA variável com esta linha de código:
SECRET_KEY = os.environ.get('CHAVE SECRETA')
Você pode executar seu servidor de desenvolvimento para confirmar se a configuração acima funciona. Em caso afirmativo, seu projeto deve ser executado conforme o esperado. O comando abaixo iniciará seu servidor de desenvolvimento.
python manage.py runserver
Mantenha sua chave secreta segura com variáveis de ambiente
Expor sua chave secreta pode causar muitos problemas para você como desenvolvedor. Talvez você nem sempre consiga recuperar seu projeto de um ataque, especialmente em um ambiente de produção.
Para evitar esses efeitos colaterais negativos, sempre armazene sua chave secreta em uma variável de ambiente e use um .gitignore arquivo para mantê-lo fora do seu repositório git.