Всякий раз, загружая свой проект или код на GitHub с общедоступным репозиторием, нужно помнить о безопасности. Ведь пользователи, которые запустят файл, содержащий секретные ключи и пароли, будут иметь как минимум доступ на чтение, а значит — получат возможность легко завладеть паролями. Так что вопрос безопасности очень важен и нужно очень тщательно его продумывать. Например, нужно всегда скрывать идентификационные ключи или токены Google OAuth, секретные ключи в приложении на Django и т. д.
Прочитав это руководство, вы научитесь скрывать свои пароли от всех тех, кто будет открывать и смотреть ваш проект на Github.
Сначала сделаем примерный файл на Python с названием temp.py и попробуем скрыть в нем пароль.
userID = 'shivi_020'
password = 'thenightwing'
print(userID, password)
Очевидно, что при загрузке этого кода на Github хотелось бы, чтобы другие люди не видели пароль, содержащийся в файле temp.py.
В Python, чтобы скрыть пароль, понадобится функция config (она находится в модуле decouple) или функции переменных окружения из модуля os. Будем работать с функцией config модуля decouple. Для установки этого модуля выполняем в терминале следующую команду:
pip install python-decouple
После установки создаем файл .env в той же папке, что и файл test.py, после чего копируем и вставляем в него идентификатор пользователя userID и пароль:
userID = 'shivi_020'
password = 'thenightwing'
Примечание: этот метод будет работать только при создании файла .env. Никакой другой формат файла не подойдет (хотя при желании можно использовать .py, .json, .ini или config.ini).
Вернемся к файлу test.py и внесем в него следующие изменения:
from decouple import config
userID = config('userID',default='')
password = config('password',default='')
print(userID, password)
Нетрудно догадаться, как этот код будет работать. Идентификатор пользователя userID и пароль будут извлечены из файла .env. Здесь в функции config присутствует аргумент по умолчанию. Зачем? На тот случай, если поля с заданным значением (первый аргумент) нет в файле .env. Тогда в кавычки будет подставлен этот аргумент по умолчанию. Если бы его не было, то должна была быть выброшена ошибка и значение этого поля инициализировано пустой строкой или любым другим значением.
Но проблема по-прежнему остается: любой, кто откроет ваш репозиторий, увидит пароль, если откроет файл .env. Чтобы не допустить этого, в одной папке с .env и test.py создадим файл .gitignore и добавим в него .env:
.env
Github будет игнорировать этот файл .env, так что в вашем репозитории его видно не будет. Теперь идентификатор пользователя userID и пароль в безопасности.
Чтобы ваши скрипты применялись и другими пользователями, напишите документацию и сохраните ее в Readme.md, изложив подробности создания файла .env и запуска кода, а также загрузки его в репозиторий GitHub. Для использования скрипта им нужно будет ввести в ими же созданном файле .env свой собственный идентификатор пользователя userID с соответствующим паролем.
Выходим из системы
Точно так же скрывают секретные ключи в проектах на Django, токены Google OAuth и другую секретную информацию и пароли.
Читайте также:
- Python для новичков: логические операторы, выражения присваивания и управление контекстом
- Thonny - идеальная IDE для новичков Python
- Долгожданные инструкции Switch-Case в Python
Читайте нас в Telegram, VK и Яндекс.Дзен
Перевод статьи theNightwing: Hiding Secret Keys and Passwords in Python





