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

instagram viewer
aprendendo sobre o GitHub. Quando isso acontece, você pode fazer um dos seguintes:

  1. Exclua o commit.
  2. 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.