Подтвердить что ты не робот

Должен ли я запутывать секрет пользователя OAuth, хранящийся в приложении Android?

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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