Я знаю, что эти вопросы задавались несколько раз отдельно, и большинство ответов, которые я нашел, - «Python нелегко запутать, потому что это характер языка. Если вам действительно нужна обфускация, используйте другой инструмент »и« В какой-то момент вам нужен компромисс »(см. How do I protect Python code и How to keep the OAuth consumer secret safe, and how to react when it's compromised?).Сохраняйте секретный ключ в Python
Однако, я только что сделал небольшое приложение Python, которое использует API Twitter (и поэтому нуждается в OAuth). OAuth требует секретности потребителя, который должен храниться вдали от пользователей. Приложение нуждается в этой информации, но пользователь не должен иметь доступ к ней легко. Если эта информация не может быть защищена (и я использую обфускацию и защиту как синонимы, потому что я не знаю другого способа), в чем смысл использования API OAuth для Python?
вопрос (ы), то есть:
- Можно ли Кодирую секрет в приложение, а затем запутать его эффективным образом?
- Если нет, то какой был бы лучший способ использования OAuth в Python? Я подумал о «доставке» зашифрованного тайника клиента вместе с приложением и с помощью жестко закодированного ключа для его восстановления, но проблема остается прежней (как защитить ключ); имея секрет пользователя на сервере, и попросите приложение получить его при запуске (если информация будет отправлена незашифрованной, было бы еще проще, если бы злоумышленник мог просто использовать Wireshark и получить секрет пользователя от сетевого трафика, чем декомпилировать байт-код , а также как я могу убедиться, что я отправляю этот секрет в свое приложение, а не злоумышленнику? Любая форма проверки подлинности, которую я знаю, потребует наличия секретной информации в стороне приложения, проблема остается прежней); смесь обоих (сервер посылает ключ шифрования, те же проблемы, что и раньше). Основная проблема одна и та же: как у вас есть что-то секретное, если невозможно скрыть важную информацию?
Я также видел комментарии, говорящие, что для этих критических частей нужно использовать расширение C/C++, но я ничего не знаю об этом, поэтому, если бы это был ответ, я был бы признателен за дополнительную информацию.
Кто является «пользователем» в этом вопросе, ваш клиент? (Вы предложили «отгружать» приложение вместе с ключом, но я не уверен, если вы имели в виду это буквально.) –
Пользователь только я, это не серьезный проект.Мне было интересно, как кто-то, кто действительно отправляет (например, делает его доступным на своем веб-сайте), использует приложение Python, используя OAuth. – user2891462
Связано ли это с обсуждаемой проблемой [здесь] (http://blog.codinghorror.com/keeping-private-keys-private/)? – TigerhawkT3