Хранение ваших закрытых ключей вне репозиториев кода жизненно важно для безопасности. Узнайте, как это сделать и как восстановиться, если вы уже совершили ошибку.

В Django секретный ключ играет жизненно важную роль в повышении безопасности вашего приложения. Он помогает управлять сеансами пользователей, защищает от атак с подделкой межсайтовых запросов (CSRF) и защищает ваши данные, среди прочего, создавая и проверяя криптографические подписи.

Вы должны всегда держать секретный ключ вашего проекта в безопасности. Его раскрытие сделает ваше приложение уязвимым для злонамеренных атак хакеров, что поставит под угрозу его безопасность. Если ваш секретный ключ будет скомпрометирован, вы должны знать, как сгенерировать новый, чтобы уменьшить негативное влияние на ваше приложение.

Как ваш секретный ключ Django может быть раскрыт?

Вы можете случайно сделать свой секретный ключ Django общедоступным, если неосознанно зафиксируете его в git или аналогичном репозитории исходного кода. Эта ошибка распространена среди новых программистов, которые еще

instagram viewer
изучение GitHub. Когда это произойдет, вы можете сделать одно из следующих действий:

  1. Удалите фиксацию.
  2. Полностью заменить секретный ключ.

Удаление коммита может быть не лучшим вариантом, потому что история коммитов по-прежнему может быть доступна с помощью различных средств, таких как кэшированные копии на GitHub или других распределенных системах. Безопаснее всего в такой ситуации предположить, что ваш секретный ключ уже скомпрометирован.

Вы должны сгенерировать новый секретный ключ для замены скомпрометированного и защитить его с помощью переменных среды. В любом случае вам следует научиться генерировать новый секретный ключ в Django, чтобы защитить свое приложение от таких вещей, как Атаки с подделкой межсайтовых запросов (CSRF).

Как сгенерировать новый секретный ключ в Django

Django предоставляет функцию, называемую get_random_secret_key() это поможет вам генерировать новый секретный ключ всякий раз, когда вы его вызываете. Функция get_random_secret_key() — это служебная функция, которая использует секреты модуль на Python для создания безопасного секретного ключа из 50 символов.

Чтобы сгенерировать новый секретный ключ с помощью функции get_random_secret_key(), откройте Интерфейс командной строки (CLI) и введите эту команду:

оболочка python manage.py -c "из django.core.management.utils импортировать get_random_secret_key; распечатать (get_random_secret_key())"

Приведенная выше команда импортирует функцию get_random_secret_key() из django.core.management.utils а затем распечатывает новый секретный ключ из 50 символов, который вы можете использовать в своем проекте. Перед запуском вышеуказанной команды убедитесь, что вы находитесь в корневом каталоге вашего проекта, т. е. в том же месте, что и управлять.py файл в вашем проекте.

Вы можете запустить ту же команду вне вашего CLI, создав файл Python и вставив в него этот фрагмент кода:

# импортируем функцию get_random_secret_key()
от django.core.management.utils Импортировать get_random_secret_key

секрет_ключ = получить_случайный_секрет_ключ()
печать (secret_key)

Вы можете запустить код, набрав его в CLI:

python имя_файла.py

Приведенная выше команда должна распечатать новый секретный ключ из 50 символов, который вы можете использовать в своем проекте.

Как защитить свой секретный ключ с помощью переменных среды

Вы, вероятно, не хотите менять свой секретный ключ каждый раз, когда делаете коммит на GitHub. Эффективный способ сохранить секретный ключ в безопасности — сохранить его в переменной среды. Переменные среды — это значения, которые вы можете установить за пределами вашей кодовой базы, к которым ваша программа может получить доступ во время выполнения. Они могут хранить конфигурацию, ключи API, учетные данные базы данных и т. д.

Вы можете сохранить переменные среды в файле с именем .env и исключить их из своего репозитория git. Вы можете сделать это, создав файл с именем .gitignore в вашем проекте. Файл .gitignore содержит список файлов и папок, которые Git не будет отслеживать.

Типы файлов и структуры каталогов варьируются от проекта к проекту, но есть разумные значения по умолчанию, которые вы можете применить для каждого языка. Вы можете найти список шаблонов .gitignore в Репозиторий GitHub gitignore. Следующие шаги показывают, как использовать файл .gitignore с переменными среды в Django.

1. Создайте файл .gitignore

В вашем базовом каталоге — расположение вашего управлять.py файл — создать .gitignore файл и скопируйте содержимое этого Файл GitHub внутрь. Этот файл является образцом .gitignore для проектов Python, который исключает общие файлы, которые вам не нужны в вашем репозитории.

Кроме того, вы можете добавить файл .gitignore в свой проект при создании репозитория на GitHub. Для этого нажмите на кнопку Добавить .gitignore вариант, найдите Python и выберите его.

2. Создайте файл .env

В базовом каталоге создайте файл с именем .env. В этом файле будут храниться все ваши переменные среды. Скопируйте и вставьте свой секретный ключ в этот файл (удалите кавычки и пробелы вокруг него). Вот пример:

СЕКРЕТ_КЛЮЧ=х#)_v1dtrlqvc61*025t^u4*-2h^kq&fmaw-ifgkppjxpyhh1%

Открой .gitignore файл и убедитесь, что .env имя файла находится в нем. Если это не так, вы можете добавить его, написав имя файла отдельно в строке:

.env

3. Установите пакет python-dotenv

Откройте CLI и установите python-dotenv пакет как зависимость.

pip установить python-dotenv

4. Измените файл settings.py

В вашей settings.py файл, импортируйте следующие пакеты:

Импортировать Операционные системы
от дотенв Импортировать load_dotenv

Затем загрузите переменные среды из вашего .env файл в свой settings.py файл, позвонив в load_dotenv() функция:

load_dotenv()

Наконец, замените свой СЕКРЕТНЫЙ КЛЮЧ переменная с этой строкой кода:

SECRET_KEY = os.environ.get('СЕКРЕТНЫЙ КЛЮЧ')

Вы можете запустить свой сервер разработки, чтобы убедиться, что указанная выше конфигурация работает. Если это так, ваш проект должен работать так, как вы ожидаете. Команда ниже запустит ваш сервер разработки.

сервер запуска python manage.py

Держите секретный ключ в безопасности с помощью переменных среды

Раскрытие вашего секретного ключа может вызвать много проблем у вас как у разработчика. Вы не всегда сможете восстановить свой проект после атаки, особенно в производственной среде.

Чтобы предотвратить эти негативные побочные эффекты, всегда храните свой секретный ключ в переменной среды и используйте .gitignore файл, чтобы держать его подальше от вашего репозитория git.