Выдаст понятную ошибку если переменная не задана.
Что такое SECRET_KEY
SECRET_KEY — случайная строка, используемая Django для:
- Подписи сессий и cookies
- Защиты CSRF-токенов
- Генерации ссылок для сброса пароля
- django.contrib.messages
Генерация нового ключа
from django.core.management.utils import get_random_secret_key
print(get_random_secret_key())
Или через командную строку:
python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"
Правила безопасности
- Никогда не коммитить в git — историю git не изотрёшь
- Длина минимум 50 символов
- Уникальный для каждого окружения (dev ≠ prod)
- Ротировать при компрометации
Хранение в переменной окружения
# settings.py
import os
SECRET_KEY = os.environ.get('SECRET_KEY')
if not SECRET_KEY:
raise ValueError("SECRET_KEY environment variable is not set!")
.env:
SECRET_KEY=django-prod-abcdef1234567890...
.gitignore
.env
*.env
.env.local
.env.production
Если ключ утёк
- Немедленно сгенерируй новый ключ
- Установи его в продакшн
- Все текущие сессии будут аннулированы (пользователи выйдут)
- CSRF-токены станут недействительны
django-environ для валидации
import environ
env = environ.Env(SECRET_KEY=(str, None))
SECRET_KEY = env('SECRET_KEY')
Выдаст понятную ошибку если переменная не задана.
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!