Проверьте, поступает ли http-запрос из моего приложения для Android


Я получаю данные с внешнего сервера для использования с моим приложением для Android. Я бы хотел, чтобы эти данные были доступны только с помощью моего приложения. Я использую стандартное http-соединение для получения данных с сервера apache/php в формате json. Я также отправляю некоторые параметры на сервер для получения соответствующих данных. Теперь я планирую сделать следующее:

  1. Отправьте параметры
  2. Отправьте что-то вроде md5 ("Какая-то секретная фраза"+параметры).
  3. Проверьте правильность секретной фразы на сервере сторона.

Теперь вопрос в том, является ли это безопасным подходом в отношении обратного проектирования? На данный момент я не могу придумать никакой другой возможности получить эти данные. Но если кто-то сможет декомпилировать мой apk, он также сможет извлечь эту "секретную фразу" (довольно сложно сделать на стороне сервера), а затем получить доступ к серверу, не так ли? Это реальная угроза? Есть ли какая-либо другая возможность проверить подлинность моего приложения на сервере?

Я посмотрел на форумах, например. Определите, является ли HTTP запросы из приложения для Android или нет? а затем ответьте соответствующим образом, но они не объясняют проблему декомпиляции.

Author: Community, 2011-12-28

5 answers

Одно из основных правил безопасности гласит: вы не доверяете данным клиента. Никогда.

Вы должны учитывать, что ваше приложение декомпилировано, все "секретные" ключи известны злоумышленнику и т.д.

Однако вы можете препятствовать попыткам злоумышленника подделать ваши запросы. Отправка (и проверка) контрольной суммы вашего запроса является одним из методов (ваша идея MD5(secret_key + params)).

Вы также можете переключиться на двоичный зашифрованный протокол. Но для этого требуется ГОРАЗДО больше работы и совершенно другая архитектура сервера.

 8
Author: Sergio Tulentsev, 2011-12-28 00:41:02

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

 2
Author: Adam F, 2011-12-28 02:13:50

Вы можете скрыть свои ссылки, установив все URL-ссылки и имена параметров в strings.xml например: http://wwww.yourdomain.com/yourpage.any имя пользователя и получите URL-адрес, такой как:

String serverUrl = Resources.getsystem().getstring(R.strings.name_your_link_id); String parameterKey = Resources.getsystem().getstring(R.strings.name_your_parameter_id); Uri url = Uri.parse(serverUrl+"?"+parameterKey+"=" + yorusername);

И сделайте любой http-запрос HttpURLConnection con = (HttpURLConnection) url.openConnection();

Когда кто-либо попытается декомпилировать ваше приложение, он покажет только идентификатор в виде длинного целого числа в R.java файл получить код такой это String serverUrl = Resources.getsystem().getstring(12346546564); String parameterKey = Resources.getsystem().getstring(123321321132);

 2
Author: Ahmed AlWahib, 2014-09-25 16:17:56

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

  1. Подпишите свое приложение своим сертификатом.
  2. Найдите подпись сертификатов и сохраните ее на своем внутреннем сервере.
  3. Для каждого запроса ожидайте, что эта подпись будет отправлена приложением.
  4. проверьте подпись, отправленную приложением на уровне сервера, и принимайте только в том случае, если они совпадают.

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

Этот ответ основан на этом блоге. Используйте https для связи с сервером приложения.

 2
Author: varun, 2015-11-04 04:11:11

К сожалению, если кто-то декомпилирует ваш apk, он может легко увидеть ваши строки.

РЕДАКТИРОВАТЬ: Я не думаю, что есть лучший способ сделать это.. возможно, только для публикации вашего приложения на Android Market с включенной защитой от копирования Android...

 1
Author: Cata, 2011-12-28 00:39:26