Как сохранить активацию биллинга в приложении, чтобы затруднить фальсификацию

Я пытаюсь использовать биллинг в приложении v3, и я видел в образце до того, как сохранить () это предупреждение

/*
 * WARNING: on a real application, we recommend you save data in a secure way to
 * prevent tampering. For simplicity in this sample, we simply store the data using a
 * SharedPreferences.
 */

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

Как я должен хранить статус лицензии? Есть ли способ использовать Preference более безопасным способом?

Заметьте, я знаю, что всегда есть способ сломать любую защиту, но лучше усложнить ее.


person AndreaF    schedule 27.09.2014    source источник


Ответы (2)


Рекомендуется поддерживать свой собственный сервер. Храните и используйте конфиденциальные данные оттуда.

Обойти это можно было бы с помощью SharedPreference. Зашифруйте данные перед их сохранением и Расшифруйте их при использовании. Для этого вам необходимо использовать пакет javax.crypto.*. Вот пример.

person Hemanth    schedule 27.09.2014
comment
Является ли шифрование данных и сохранение по предпочтениям менее безопасным, чем шифрование данных и сохранение в файле, или это одно и то же?? - person AndreaF; 27.09.2014
comment
Ну, это то же самое. Все общие настройки хранятся в виде XML-файла. Он находится здесь: /data/data/com.your.package/shared_prefs/com.your.package_preferences.xml. Хотя использование общих настроек оказывается более удобным, так как данные хранятся в виде пары ключ-значение. - person Hemanth; 27.09.2014

Вся информация, связанная с лицензией, предоставляется вам API Google Market — обычно вам не нужно иметь дело с собственным сервером. Информация кэшируется на устройстве и должна быть предоставлена ​​вам даже при отсутствии подключения. Но хорошей практикой является также локальное хранение этой информации. SharedPreferences - хороший способ. Я думаю, что шифровать/расшифровывать данные, хранящиеся в SharedPrefercnes в приватном режиме, - это перебор, но если вы заполняете лучше - делайте так, как советует arol_123. Полезный помощник для SharedPrefernces вы можете найти здесь.

person VerunArt    schedule 27.09.2014
comment
Привет, то, что вы используете для хранения данных, полностью зависит от того, над каким приложением вы работаете. Например, Если в моем приложении есть встроенный элемент, который предоставляет пользователю 500 золотых, то я могу избежать хранения доступного золота в общих настройках. Поскольку любой может получить доступ к общему файлу настроек моего приложения и может изменить значения. - person Hemanth; 27.09.2014
comment
И по какой-то причине, если я не могу обслуживать свой сервер или не хочу, чтобы пользователи все время оставались подключенными к Интернету, я хотел бы зашифровать его и сохранить в общих настройках. - person Hemanth; 27.09.2014
comment
В данном конкретном случае вы правы. Я говорил о каком-то купленном предмете, например о лицензии (AndreaF просил). И вы знаете, прямо сейчас я думаю, что это очень хорошая практика для шифрования состояния лицензии, в то время как корневое устройство позволяет получить доступ и изменить общие настройки. - person VerunArt; 28.09.2014