В моем случае я использую API Dropbox. В настоящее время я храню ключ и секрет в файле JSON, так что я могу gitignore его и сохранить его из репо Github, но, очевидно, это не лучше, чем иметь его в коде с точки зрения безопасности. Было много вопросов о защите/обфускации Python раньше (обычно по коммерческим причинам), и ответ всегда «Do not, Python не предназначен для этого».Как хранить ключи API в приложении Python?
Таким образом, я не ищу способ защитить код, а просто решение, которое позволит мне распространять мое приложение, не раскрывая мои данные API.
записывать их в текстовый файл в виде зашифрованных значений. Создайте секретно закрытый ключ шифрования, при необходимости расшифруйте его. Однако может быть лучший способ, но в прошлом это хорошо сработало для меня. –
Если кто-то запускает программу на своем компьютере, а программа использует ключ, она практически раскрывается. Не нужно гениально запускать WireShark, позволить программе подключаться и фильтровать захват для соединений с Dropbox (или какой-то другой критерий - худший случай, который вы копаете через несколько сотен пакетов). И просто запутывание программы не купило бы вам ничего, потому что вы не можете изменить строковый литерал, который является ключом API, или это было бы бесполезно для вашей программы. – delnan
@delnan Но будет ли отображаться ключ API в HTTP-трафике? Dropbox делает все по SSL. Я не знаю, используют ли они переменные GET или POST или просто помещают их в заголовки HTTP-запроса. Являются ли эти вещи зашифрованными в запросе HTTPS или просто телом запроса? – espekia