Фактчек

Пишем своего робота на Python. Урок 12

Учимся работать с личными данными при написании кода: узнаем, как безопасно обращаться к логинам, паролям и любым персональным данным через переменные окружения.

Дата
27 июля 2021
Автор
Редакция
Пишем своего робота на Python. Урок 12
Съемка и монтаж: Глеб Лиманский

На предыдущем 11-м занятии мы отправляли госконтракты себе на почту. И данные для входа в свою почту — логин и пароль — мы прописывали прямо в коде.

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

Первым шагом переместим все переменные (в нашем случае логин и пароль) в файл config.py, чтобы их было удобно редактировать в одном месте. Если эта переменная будет использована в каких-то других файлах, мы сможем не заходить отдельно в каждый из них, чтобы что-то поменять, а будем изменять все в одном месте — config.py.

Примечание: в этом уроке пароль и почта ненастоящие.

После того как мы перенесли логин и пароль в файл config.py, удалим эти строки из основного файла, который отправляет госконтракты на почту (send_email.py) и в начало добавим строку импорта этих данных из файла config.py. Не забываем сохранять изменения командой Ctrl + S или Command + S.

На этом уроке мы не будем отправлять контракты, а только потренируемся импортировать логины и пароли в код безопасным способом. Поэтому закомментируем последние строки файла send_email.py, которые непосредственно отвечают за отправку контрактов на почту, а вместо этого выведем две строки с print: просто распечатаем почту и пароль, чтобы убедиться, что они корректно передаются в программу.

Попробуем распечатать логи и пароль, запустив программу send_emial.py в терминале (не забудьте указать путь к папке, в которой она находится). Логин и пароль корректно передаются.

Мы переместили все переменные в один файл config, и теперь нам удобно их менять, чтобы изменения отображались во всех файлах. Но это по-прежнему код, который нам может потребоваться куда-то выложить и передать. И персональные данные принято передавать через переменные окружения (environment variables, их еще переводят как переменные среды).

Когда любая программа запускается, то ей передаются некие переменные, которые описывают ее окружение: где она запущена, на какой операционной системе, из какой папки, при каких обстоятельствах и так далее. Эти переменные можно увидеть, если ввести в терминале команду env.

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

Для этого создаем файл .env и теперь туда записываем логин и пароль. Этот файл мы никому не будем передавать и будем его беречь от посторонних.

Устанавливаем библиотеку python-dotenv командой pip3 install python-dotenv.

Теперь в файле config убираем свои логины пароли и меняем на следующие строки:

Сохраняем все изменения в файлах config и .env. Теперь логин и пароль автоматически будут подтягиваться из файла .env через переменные окружения. Проверим, запустив программу send_email.py. Логин и пароль распечатались.

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

Sottel

Crampton

Sondale

владели

сменились

принадлежало

Sottel Services Ltd

Crampton Finance Ltd

Investment Advisors Ltd

приобрела

приобрела

передала

продав

компании

указал

China EC IX Ltd

соцсетям

показывают

учредил

бенефициаром

бенефициаром

владельцем

бенефициаром

бенефициаром

бенефициаром

бенефициаром

через

приобрела

планируют

видео

невзоров

Поделиться