Стоит ли запутывать секрет OAuth, хранящийся в приложении Android? - PullRequest
43 голосов
/ 19 августа 2011

Мое приложение для Android содержит секретный ключ пользователя OAuth для API Twitter.На данный момент он находится в файле .properties в виде простого текста, поэтому для его просмотра в APK требуется 100% усилий.

Должен ли я предпринять шаги, чтобы скрыть его (например, rot13 или сохранить в запутанном коде Java)?Или я действительно должен избегать всего этого, так как это может создать ложное чувство безопасности?

Как люди обычно распространяют / хранят секрет OAuth в приложениях Android?Насколько распространен секрет кражи и злоупотребления?

Ответы [ 3 ]

41 голосов
/ 20 августа 2011

Реальный вопрос в том, что злоумышленник может получить от кражи ...

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

Значение секрета клиента олицетворяет собой приложение.Это не дает никакого доступа к пользовательским данным.Однако, поскольку Twitter поддерживает автоматическую выдачу учетных данных ранее одобренным приложениям (их вход с помощью потока Twitter), злоумышленник может создать веб-приложение с вашими секретными данными и украсть пользовательские данные, используя скрытое перенаправление.

Проблема с реализацией Twitter заключается в том, что они не спрашивают разработчика о характере приложения.Если бы они это сделали, они бы не выдавали вам секрет с самого начала и заблокировали бы любого, кто создает веб-приложение, используя ваши учетные данные клиента и крадет данные у пользователей, которые уже одобрили его.

Один из вариантов - обфусцированиеслабый.Перемещение секрета на веб-сервер, действующий в качестве прокси-сервера API, - это еще один пример, но это просто перемещает проблему в другое место, поскольку теперь ваше приложение должно проходить аутентификацию на прокси-сервере.Однако этот шаблон может быть достаточно безопасным, если вам требуется, чтобы пользователи заходили на ваш сайт (который может использовать для просмотра через веб-сайт Twitter).Таким образом, кому-то, пытающемуся злоупотребить вашим прокси, нужно, чтобы его пользователи открывали учетные записи в вашем сервисе, что не очень привлекательно.

Короче, продолжайте и запутывайте его.Это не больно.Рассмотрите возможность использования шаблона прокси тоже.А может быть, пусть Twitter узнает, что их политики безопасности "не велики".

4 голосов
/ 19 августа 2011

Я бы определенно прочитал этот анализ одного из авторов OAuth, Эрана Хаммера-Лахава, который цитирует еще одну статью , в которой анализируются секретные проблемы OAuth в Twitter .

MyСовет будет заключаться в том, чтобы запутать ключ, чтобы он не мог быть тривиально извлечен, и вы должны быть защищены от случайных и спамеров.

Хаммер-Лахав считает, что секреты OAuth не должны быть отозваны и должны использоваться только для сбора статистики.Надеюсь, Twitter последует этому совету.

0 голосов
/ 19 августа 2011

Суть 0Auth - это то, что вы не храните ценную конфиденциальную информацию на устройстве - поэтому можно хранить секретные данные на устройстве (намного лучше, чем реальные учетные данные пользователя). В случае кражи секретов вашего устройства пользователь всегда может лишить права доступа без необходимости изменять свои учетные данные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...