Как сохранить секреты в безопасности?
Часто при работе над проектом Django у нас есть секретные ключи, ключи OAuth и другая важная информация, которую необходимо хранить в безопасности и конфиденциальности. Вы ни в коем случае не должны раскрывать такие ключи, потому что это делает вашу систему уязвимой для атак безопасности.
Как мы можем прочитать из документации, в основном, что делает python-dotenv, это считывает пары ключ-значение из файла .env и устанавливает их как переменные среды для последующего извлечения.
Прежде всего, давайте установим этот модуль:
pip install python-dotenv
Затем создайте файл .env в корневом каталоге нашего проекта. Здесь мы поместим пары ключ-значение всех переменных среды, необходимых нашему приложению:
SECRET_KEY = 'django-insecure-xxxxxxxxx'
GITHUB_KEY = 'xxxxxxxxx'
GITHUB_SECRET = 'xxxxxxxxxxxxxxxxxx'
GOOGLE_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxx'
GOOGLE_SECRET = 'xxxxxxxxxxxxxxxxxx'
Возьмите ключи из файла settings.py и удалите их оттуда, а в самое начала файла добавьте их импорт:
from dotenv import load_dotenv
import os
load_dotenv()
Теперь вместо того, чтобы раскрывать наши секретные ключи и ключи OAuth в настройках, давайте извлечем их через их имена ключей следующим образом:
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = str(os.getenv('SECRET_KEY'))
# social auth configs for github
SOCIAL_AUTH_GITHUB_KEY = str(os.getenv('GITHUB_KEY'))
SOCIAL_AUTH_GITHUB_SECRET = str(os.getenv('GITHUB_SECRET'))
# social auth configs for google
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = str(os.getenv('GOOGLE_KEY'))
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = str(os.getenv('GOOGLE_SECRET'))
Вот и все, с помощью этих простых шагов мы можем сделать наше приложение более безопасным.