В разделе Security Controls в обзоре биллинга в приложении указывается выполнять «проверку подписи» на удаленном сервере, а не в приложении (запущенном локально на устройстве Android):
Выполняя проверку подписи, вы можете помочь обнаружить ответы, которые были подделаны или были подделаны.Вы можете выполнить этот шаг проверки подписи в своем приложении;однако, если ваше приложение подключается к безопасному удаленному серверу, мы рекомендуем вам выполнить проверку подписи на этом сервере .
Но если я выполню проверку подписи на удаленном сервере, ожидая только ответа yes/no
или true/false
, разве это не легче перехватить и изменить злоумышленнику?
А если ответ от удаленного сервера - еще одна подпись, то как проверитьвторая подпись локально на устройстве безопаснее, чем для первой (рыночной) подписи?
Что мне не хватает?
Обновление: @alf правильно заметил, что еслиСервер также отвечает за доставку приобретенного контента, и проверка подписи выполняется на сервере, тогда даже если злоумышленник скомпрометирует приложение, сервер не будет доставлять контент, приобретенный с помощью биллинга в приложении.Это тривиально и понятно.
Изначально я не упомянул о том, что я имею в виду сценарий, в котором сервер не доставляет контент , а только проверяет подпись,так что приложение может решить, разблокировать ли определенные функции .В таком случае, в чем преимущество проверки подписи удаленного сервера над встроенной в приложение?