Всякий раз, загружая свой проект или код на 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