Возможно ли иметь одно испытание на устройство?

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

Solutions Collecting From Web of "Возможно ли иметь одно испытание на устройство?"

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

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

(Подсказка: прочитайте о криптографии с открытым ключом)

Тем не менее, это не полностью безопасно. Настоящий решительный злоумышленник может укоренить свое устройство и установить специальную прошивку, которая позволяет ему управлять идентификатором, возвращаемым «getDeviceId ()». Это не то, что большинство людей захочет сделать, большинство людей предпочтут найти альтернативное бесплатное приложение или просто купить приложение, а не пройти через этот маршрут. Против сухарей с такой решительностью и навыками вы мало что можете сделать.

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

Тем не менее, никакая схема безопасности не является надежной, приложение java / android может быть запрограммировано с обратной связью, и определенный хакер может подделать ваше приложение и отключить его проверки лицензии. Единственный надежный способ предотвратить несанкционированное использование приложения – вовсе не распространять приложение.

Я думаю, вы могли бы получить 99% эффекта более сложной схемы с мертвым мозгом – просто: просто сохраните файл где-нибудь на устройстве, что указывает на то, что срок действия пробной версии истек. Разумеется, высокотехнологичные пользователи смогут находить и удалять файл, но подавляющее большинство не будет беспокоиться – устройство – это непостижимая плита магии для них, вмешательство в внутренние файлы может вызвать недовольство крошечных гномов, яростно торгующих за экран.

Вы можете сделать вещи более сложными, сокрыв файл блокировки, изменив имя и местоположение на основе идентификатора устройства. Таким образом, для кого-то гораздо труднее поделиться инструкциями о том, как уклониться от пробной схемы.

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

Конечно, но вам нужно настроить, чтобы хранить идентификаторы устройств на своем собственном сервере. На iphone вы можете получить UDID, используя

UIDevice *device = [UIDevice currentDevice]; NSString *uniqueIdentifier = [device uniqueIdentifier]; 

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

В android getDeviceID() предоставляет уникальный идентификатор устройства. Проверьте документацию для получения дополнительной информации об этом.

Если я чего-то не пропущу, мое решение будет простым. Я истечёт срок действия сервиса, предоставляемого приложением, а не самого приложения. Это можно сделать с помощью некоторого механизма токена, такого как oAuth. (С истекающим токеном со значительным сроком службы, в этом случае ваш пробный период). В процессе регистрации клиента я создам токен запроса как функцию идентификатора устройства Android и запрошенного времени. Оформить заказ oAuth, это может быть хлопот, но почти все основные поставщики услуг используют его.

Как насчет сохранения MAC-адреса адаптера Wi-Fi? Возможно, на вашем сервере и ваше приложение будет запрашивать сервер, если этот MAC уже зарегистрирован.

С РАЗРЕШЕНИЕМ ПОЛЬЗОВАТЕЛЯ, при первом запуске приложения, запросите сервер, если текущий MAC-адрес устройства уже зарегистрирован? Если нет, сохраните MAC-адрес на своем сервере. Если вы уже зарегистрировались, попросите пользователя приобрести приложение для продолжения использования.

Этот метод может быть дополнен некоторыми криптографическими алгоритмами, предложенными Ли Райаном для обеспечения дополнительной безопасности и блокировок и / или пробного периода.

Я мало что знаю об iPhone, но я считаю, что каждый iPhone имеет адаптер Wi-Fi, и каждый адаптер Wi-Fi имеет уникальный MAC-адрес. Также проверьте юридическую сторону этого решения, поскольку хранение MAC может вызвать проблемы / проблемы конфиденциальности. Поэтому, прежде чем использовать это, проверьте действующие законы.