Поддържането на личните ви ключове извън хранилищата на кодове е жизненоважно за сигурността. Разберете как да го направите и как да се възстановите, ако вече сте направили грешката.

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

Трябва да пазите тайния ключ на вашия проект сигурен през цялото време. Излагането му ще направи приложението ви податливо на злонамерени атаки от хакери, компрометирайки сигурността му. Ако вашият таен ключ бъде компрометиран, трябва да знаете как да генерирате нов, за да намалите отрицателното въздействие върху вашето приложение.

Как може да бъде разкрит вашият таен ключ на Django?

Можете случайно да направите вашия Django таен ключ публичен, ако несъзнателно го ангажирате с git или подобно хранилище на изходния код. Тази грешка е често срещана сред новите програмисти, които все още са

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

  1. Изтрийте ангажимента.
  2. Сменете изцяло секретния ключ.

Изтриването на ангажимента може да не е най-добрият вариант, тъй като историята на ангажиментите все още може да бъде достъпна чрез различни средства, като например кеширани копия в GitHub или други разпределени системи. Най-безопасното нещо, което можете да направите в такава ситуация, е да приемете, че вашият таен ключ вече е компрометиран.

Трябва да генерирате нов таен ключ, за да замените компрометирания и да го защитите с помощта на променливи на средата. Във всеки случай трябва да научите как да генерирате нов таен ключ в Django, за да защитите приложението си от неща като Cross-Site Request Forgery (CSRF) атаки.

Как да генерирате нов таен ключ в Django

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

За да генерирате нов таен ключ с функцията get_random_secret_key(), отворете своя Интерфейс на командния ред (CLI) и въведете тази команда:

python manage.py shell -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 = get_random_secret_key()
печат (таен_ключ)

Можете да стартирате кода, като напишете това във вашия CLI:

python име на файл.py

Командата по-горе трябва да отпечата нов таен ключ от 50 знака, който можете да използвате във вашия проект.

Как да защитите своя таен ключ с променливи на средата

Вероятно не искате да променяте секретния си ключ всеки път, когато правите GitHub ангажимент. Ефикасен начин да запазите вашия таен ключ в безопасност е като го съхранявате в променлива на средата. Променливите на средата са стойности, които можете да зададете извън вашата кодова база, до които вашата програма все още има достъп по време на изпълнение. Те могат да съхраняват конфигурация, API ключове, идентификационни данни за база данни и т.н.

Можете да съхранявате вашите променливи на средата във файл с име .env и да ги изключите от вашето git хранилище. Можете да направите това, като създадете файл, наречен .gitignore във вашия проект. Файлът .gitignore съдържа списък с файлове и папки, които Git няма да проследява.

Типовете файлове и структурите на директории варират от проект до проект, но има разумни настройки по подразбиране, които можете да приложите за всеки език. Можете да намерите списък с шаблони .gitignore в Gitignore хранилище на GitHub. Следващите стъпки ви показват как да използвате файла .gitignore с променливи на средата в Django.

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

Във вашата основна директория—местоположението на вашия управление.py файл—създайте a .gitignore файл и копирайте съдържанието на това GitHub файл в него. Този файл е примерен .gitignore за проекти на Python, който изключва общи файлове, които няма да искате във вашето хранилище.

Като алтернатива можете да добавите файл .gitignore към вашия проект, докато създавате хранилище в GitHub. За да направите това, щракнете върху Добавете .gitignore опция, потърсете Python и го изберете.

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

Във вашата базова директория създайте файл, наречен .env. Този файл ще съхранява всичките ви променливи на средата. Копирайте и поставете вашия таен ключ в този файл (премахнете кавичките и интервалите около него). Ето един пример:

SECRET_KEY=x#)_v1dtrlqvc61*025t^u4*-2h^kq&fmaw-ifgkppjxpyhh1%

Отвори .gitignore файл и потвърдете, че .env името на файла е в него. Ако не е, можете да го добавите, като напишете името на файла самостоятелно на ред:

.env

3. Инсталирайте пакета python-dotenv

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

pip инсталирайте python-dotenv

4. Променете вашия файл settings.py

Във вашия settings.py файл, импортирайте следните пакети:

импортиране операционна система
от dotenv импортиране load_dotenv

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

load_dotenv()

Накрая сменете вашия SECRET_KEY променлива с този ред код:

SECRET_KEY = os.environ.get(„SECRET_KEY“)

Можете да стартирате вашия сървър за разработка, за да потвърдите, че горната конфигурация работи. Ако това стане, вашият проект трябва да работи както очаквате. Командата по-долу ще стартира вашия сървър за разработка.

python manage.py runserver

Пазете тайния си ключ в безопасност с променливи на средата

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

За да предотвратите тези отрицателни странични ефекти, винаги съхранявайте секретния си ключ в променлива на средата и използвайте a .gitignore файл, за да го държите извън вашето git хранилище.