#android #unit-testing #security #android-security
#Android #модульное тестирование #Безопасность #android-безопасность
Вопрос:
Я разрабатываю приложение для Android, для которого я проверяю валидность приложения (запущено ли приложение после бесплатного пробного периода) с использованием серверов времени.
Код моего приложения проверяет, является ли текущая дата меньше определенной даты дд / ММ / ГГГГ. Мой код извлекает текущую дату с какого-нибудь популярного сервера времени.
У меня есть следующие вопросы:
- Каковы возможные логические угрозы безопасности для моего кода? т. Е. Какие возможные взломы можно сделать, чтобы иметь неограниченную бесплатную пробную версию?
- Как я могу повысить безопасность своего приложения, чтобы избежать взломов, связанных с процессом проверки?
- Как я могу выполнить модульное тестирование этой части кода?
Спасибо.
Ответ №1:
- Злоумышленник может изменить apk и изменить дату окончания пробной версии или удалить всю проверку. Это относительно просто, в зависимости от того, где вы его храните, им может потребоваться декомпилировать исходный код, но это тоже довольно просто.
- Технически вы можете запутать свой код, чтобы усложнить декомпиляцию, но, с одной стороны, это помогает только в том случае, если дата окончания пробной версии жестко запрограммирована (скомпилирована в исходном коде), а с другой стороны, злоумышленник все равно может изменить ее (или удалить всю проверку), добавив немного большеработа. Однако для этого потребуется немного более решительный и / или более изобретательный злоумышленник, если он запутан. Поскольку полностью предотвратить это невозможно (злоумышленник всегда сможет использовать ваше приложение столько, сколько захочет, просмотреть все пиратское программное обеспечение до эпохи SaaS), вы можете не захотеть делать больше, чем это. Необходимая работа с вашей стороны увеличивается очень быстро, но выгода (безопасность), которую вы получаете, — нет.
- Вероятно, это совершенно отдельный вопрос, возможно, вам следует опубликовать его отдельно. Мое (возможно, наивное) мнение заключается в том, что вы должны издеваться над частью, которая отправляет запрос на сервер времени, но я не эксперт в этом.
Комментарии:
1. Спасибо за полезную информацию @lengyelg. Есть ли у вас какие-либо рекомендации о том, какие форумы будут уместны для публикации вопросов такого типа?
2. Я думаю, вы можете опубликовать их в StackOverflow, здесь хороши конкретные, ответственные вопросы, связанные с программированием.