биллинг в приложении, как реализовать Security.java на сервере? (движок приложения?) - PullRequest
1 голос
/ 14 марта 2012

У меня работает демоверсия биллинга в приложении, но я не уверен, как реализовать файл Security.java на удаленном сервере, как говорится в комментариях к классу:

/**
 * Security-related methods. For a secure implementation, all of this code
 * should be implemented on a server that communicates with the
 * application on the device. For the sake of simplicity and clarity of this
 * example, this code is included here and is executed on the device. If you
 * must verify the purchases on the phone, you should obfuscate this code to
 * make it harder for an attacker to replace the code with stubs that treat all
 * purchases as verified.
 */
public class Security {
    ...

В идеале кто-то уже собрал реализацию движка приложения (java?), Может быть. Мне просто не ясно, какой из этих методов должен идти на сервере, а какой (если есть) должен оставаться на клиенте.

Например, довольно ясно, что метод verifyPurchase () должен работать на стороне сервера. Но для многих запросов на выставление счетов требуется «nonce», и бухгалтерия для них, по-видимому, находится как в клиентском коде (вызовы BillingService.java), так и в методе Security.verifyPurchase (), вероятно, в коде сервера.

Спасибо

1 Ответ

3 голосов
/ 14 марта 2012

Есть несколько примеров кода Google, я думаю, что большинство использует PHP.Там может быть что-то для Java тоже.Вкратце: почти все должно быть на сервере, если вы хотите сделать это правильно.Вам необходимо сгенерировать одноразовый номер на сервере и сохранить его в хранилище данных.Когда вы генерируете новый одноразовый номер, вы должны проверить, что он еще не используется, выполнив поиск в хранилище данных (чтобы гарантировать свойство «nonce»).Когда поступают запросы на проверку подписи, вы проверяете подпись, а затем проверяете, существует ли одноразовый номер (чтобы гарантировать, что это действительно то, что вы сгенерировали).

Recepie: просто возьмите класс 'Security` и заставьте его принимать входные данные из параметров HTTP.То, что он сохраняет в полях, хранит в хранилище данных.

Кстати, об этом говорит Google I / O с некоторыми примерами для App Engine.Я не думаю, что они выпустили фактический код все же.Вот ссылка: http://www.google.com/events/io/2011/sessions/evading-pirates-and-stopping-vampires-using-license-verification-library-in-app-billing-and-app-engine.html

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