Хранение SECRET_KEY вне файла settings.py
Хранение секретного ключа (SECRET_KEY
) вне файла settings.py
— это хорошая практика для обеспечения безопасности вашего проекта. Один из способов сделать это — использовать переменные окружения. Вот пошаговая инструкция, как это реализовать:
Шаги:
Создание переменной окружения:Переменную окружения можно установить разными способами в зависимости от операционной системы и среды, в которой вы работаете. Например, на Linux или macOS вы можете добавить переменную в файл
.bashrc
или.bash_profile
:export DJANGO_SECRET_KEY='your_secret_key_here'
На Windows вы можете установить переменную через командную строку:
setx DJANGO_SECRET_KEY "your_secret_key_here"
Чтение переменной окружения в
settings.py
:После того как вы установили переменную окружения, вы можете прочитать её в вашемsettings.py
следующим образом:import os SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY')
Таким образом, ваш
SECRET_KEY
будет считываться из переменной окружения при запуске приложения.Проверка наличия переменной:Чтобы избежать ошибок в случае отсутствия переменной окружения, вы можете добавить проверку:
import os try: SECRET_KEY = os.environ['DJANGO_SECRET_KEY'] except KeyError: raise Exception("Please set the environment variable DJANGO_SECRET_KEY")
Это позволит убедиться, что переменная установлена до запуска приложения.
Использование утилиты
python-decouple
(опционально):Библиотекаpython-decouple
предоставляет удобный способ работы с переменными окружения и конфигурационными файлами. Её можно установить через pip:pip install python-decouple
Затем вы можете использовать её в своем
settings.py
:from decouple import config SECRET_KEY = config('DJANGO_SECRET_KEY')
python-decouple
автоматически обработает отсутствие переменной и выдаст исключение, если она не найдена.
Пример settings.py
с использованием python-decouple
:
from decouple import config
BASE_DIR = Path(__file__).resolve(strict=True).parent.parent
SECRET_KEY = config('DJANGO_SECRET_KEY')
DEBUG = False
ALLOWED_HOSTS = ['yourdomain.com']
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydb',
'USER': 'dbuser',
'PASSWORD': config('DB_PASSWORD'),
'HOST': 'localhost',
'PORT': '',
}
}
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True
SECURE_SSL_REDIRECT = True
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = True
X_FRAME_OPTIONS = 'DENY'
Заключение
Хранение чувствительных данных, таких как SECRET_KEY
, вне файла settings.py
— это важная мера безопасности. Использование переменных окружения или библиотек, таких как python-decouple
, помогает защитить вашу систему от потенциальных угроз.
Категория: Администрирование | автор: root
Опубликовано: 29-01-2025 11:09 | Обновлено: 25-02-2025 10:55