Раздел Security Controls в обзоре In-app Billing предписывает выполнять "проверку подписи" на удаленном сервере, а не в приложении (запущенном локально на устройстве Android):
Выполняя проверку подписи, вы можете помочь обнаружить ответы... которые были подделаны или подменены. Вы можете выполнить этот шаг проверки подписи в своем приложении; однако, если ваше приложение подключается к защищенному удаленному серверу, то мы рекомендуем вам выполнить проверку подписи на этом сервере. сервере.
Но если я выполняю проверку подписи на удаленном сервере, ожидая только ответа да/нет
или правда/ложь
, разве это не легче для перехвата и модификации злоумышленником?
И если ответ с удаленного сервера - это еще одна подпись, то насколько проверка второй подписи локально на устройстве безопаснее, чем проверка первой (рыночной) подписи?
Что я упускаю?
Обновление: @alf правильно заметил, что если сервер также отвечает за доставку купленного контента и проверка подписи выполняется на сервере, то даже если злоумышленник скомпрометирует приложение, сервер не доставит контент, купленный через In-app billing. Это тривиально и хорошо понятно.
Вначале я не упомянул, что на самом деле я имею в виду сценарий, в котором сервер не доставляет никакого контента, а только проверяет подпись, чтобы приложение могло решить, стоит ли разблокировать определенные функции. В таком случае, в чем преимущество удаленной проверки подписи на сервере перед проверкой в приложении?