Защита конфиденциальной информации в Django на GitHub

Защита конфиденциальной информации в Django на GitHub

Vaibhav Vaibhav Jun-29, 2021 Django

Создание проектов и программного обеспечения и обмен ими со всем миром на GitHub - увлекательный и увлекательный процесс. Мы с удовольствием добавляем захватывающие и привлекательные функции в наши приложения и отправляем код на GitHub с помощью git. Тем не менее, иногда мы забываем об одном из наиболее важных аспектов разработки программного обеспечения: о безопасности.

При создании программного обеспечения мы должны убедиться, что программное обеспечение безопасно и не имеет потенциальных лазеек для утечки данных.

Веб-фреймворк Django обладает надежной защитой. Система аутентификации Django великолепна. В Django есть settings.py, в котором находится большая часть конфиденциальных данных. Следовательно, хранение такого файла на GitHub может быть опасным решением.

Но не волнуйтесь. Есть несколько способов разместить код на GitHub и одновременно обеспечить безопасность.

Защита конфиденциальной информации в Django с помощью переменных среды

Переменные среды - это некоторые переменные, значения которых хранятся вне программы, и они считываются из программы для доступа к информации. Эти переменные хранятся в файле .env.

Сначала создайте файл .env. Затем внутри файла .gitignore добавьте .env. Это дополнение гарантирует, что файл .env не будет загружен на GitHub.

Теперь вам понадобится пакет Python для работы с этими файлами. Название пакета - Decouple. Используйте следующую команду pip для установки пакета.

pip install python-decouple

Или же,

pip3 install python-decouple

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

Сохраните информацию следующим образом. Убедитесь, что вы следуете одному и тому же синтаксису: без пробелов до и после знака = и без кавычек для представления строк.

SECRET_KEY=abcdefghijklmnopqrstuvwxyz0123456789
DEBUG=True
DATABASE_NAME=HELLO_DJANGO
DATABASE_USERNAME=U_HELLO
DATABASE_PASSWORD=hA8(scA@!fg3*sc&xaGh&6%-l<._&xCf
DATABASE_HOST=127.0.0.1
DATABASE_PORT=127.0.0.1
WASD_API_KEY=abcdefghijklmnopqrstuvwxyz0123456789
PQRS_API_KEY=abcdefghijklmnopqrstuvwxyz0123456789
EMAIL=qwerty@wasd.com
PASSWORD=abcdefghijklmnopqrstuvwxyz0123456789

Как упоминалось выше, мы обычно и должны хранить все конфиденциальные данные в файле settings.py. Мы сделаем то же самое и здесь, но не будем напрямую добавлять значения. Мы будем читать их из только что созданного .env.

Внутри settings.py мы можем получить указанные выше значения следующим образом.

import os
from decouple import config

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SECRET_KEY = config('SECRET_KEY') # Here
DEBUG = config('DEBUG', cast = bool) # Here
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': config("DATABASE_NAME"),  # Here
        'USER': config("DATABASE_USERNAME"),  # Here
        'PASSWORD': config("DATABASE_PASSWORD"),  # Here
        'HOST': config("DATABASE_HOST"),  # Here
        'PORT': config("DATABASE_PORT", cast = int),  # Here
    }
}
WASD_API_KEY = config("WASD_API_KEY")
PQRS_API_KEY = config("PQRS_API_KEY")
EMAIL = config("EMAIL")
PASSWORD = config("PASSWORD")

config имеет параметр cast, который определяет, к какому типу данных должно быть приведено значение. По умолчанию Decouple считывает все значения как строки. Следовательно, этот параметр cast может использоваться для приведения значений к желаемому типу данных.

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

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

LinkedIn GitHub