Как хранить секреты
Никогда не храните секретные данные (логины, пароли, токены, ключи доступа) в вашем коде, это плохая практика. В функции и в объекты любой ключ доступа должен передаваться только в виде переменной, хранящей этот ключ. Тут вам поможет библиотека dotenv
Скопировать кодPYTHON
def any_function():
secret_token = {'token': 'my_super_secret_token'}
response_post = requests.post('https://api.vk.com/method/users.get', data=token)
from dotenv import load_dotenv
load_dotenv()
def other_function():
secret_token = '123'
response_post = requests.post('https://api.vk.com/method/users.get', data=secret_token)
В следующих уроках вы будете много работать с токенами, не пренебрегайте правилами безопасности даже во время учёбы, пусть лёгкая паранойя войдёт в привычку и станет рефлекторной.
Когда в коде используются какие-то секретные данные, импортируйте их в код извне. Это можно сделать как минимум двумя способами:
Локальное хранение секретных ключей
Создайте файл .env (все файлы, которые начинаются с точки — скрыты от просмотра в консоли и в некоторых операционных системах) и запишите в него переменные в формате ключ=значение, по одной переменной на строку:
Скопировать кодPYTHON
Token=123
Login=test
Sid=some_sid
Для доступа к переменным установите через pip библиотеку dotenv :
Скопировать кодBASH
pip install python-dotenv
Затем импортируйте и выполните функцию load_dotenv :
Скопировать кодPYTHON
import os
from dotenv import load_dotenv
load_dotenv()
token = os.getenv('Token')
print(token)
Файл .env должен лежать в той же директории, что и исполняемый файл.
Никогда не храните файл .env в репозитории!
Проверьте, что в .gitignore есть строчка .env, чтобы случайно не запушить файл на удалённый сервер.
Глобальное хранение секретных ключей
Выполните в баше команду export token=123, это запишет токен в общее пространство переменных окружения. Просмотреть содержимое этого пространства можно командой env в терминале.
Чтобы получить доступ к переменным окружения из кода, воспользуйтесь методом getenv из встроенного модуля os:
Скопировать кодPYTHON
import os
account_sid = os.getenv("account_sid")
auth_token = os.getenv("token")
Для доступа к глобальным переменным достаточно метода os.getenv.