Как некоторые приложения для Android помнят, что это не первый раз, когда они устанавливаются?

Некоторые приложения для Android могут помнить, были ли они ранее установлены на одном устройстве. Предположим, вы удалили приложение год назад. Через год, если вы снова установите это приложение, это приложение сможет узнать, что оно было установлено ранее на том же телефоне.

Этот метод используется онлайн-приложениями, чтобы навсегда запретить пользователям создавать новую учетную запись еще раз, если им было запрещено использовать эту услугу один раз. Когда такие пользователи создают новую учетную запись, переустанавливая приложение позже, эти приложения могут обнаруживать свое «присутствие в первый раз» и отправлять эту информацию на серверы, чтобы пользователь мог снова быть заблокирован.

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

28 голосов | спросил defalt 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 25 Sep 2016 18:07:01 +0300 2016, 18:07:01

5 ответов


30

Существует несколько способов идентификации уникального устройства или его пользователя:

  1. Хранить файл в некотором (не по умолчанию) каталоге : вы уже сказали это; приложения могут часто записывать на внутреннюю память устройства. Этот метод прост, работает в автономном режиме и не является самым простым для определения места размещения (поместите файл в какой-то системный каталог, и никто не захочет удалить его).
  2. Отслеживать уникальные устройства ANDROID_ID (уникальные для каждой новой установки) . Этот метод прост, но требует доступа в Интернет, по крайней мере, при первом использовании. Это не очень навязчиво и не сохраняется в случае сброса настроек. Он также уникален для каждого пользователя. См. эту информацию .
  3. IMEI : очень навязчивый, неизменный, но требует устройства с поддержкой SIM-карты. IMEI уникален для каждого устройства, его нельзя изменить и не следует за пользователем, а это означает, что если вы продадите свое устройство, новый владелец будет приветствоваться экраном, в котором говорится, что приложение уже было на телефоне.
  4. Следуйте за учетной записью пользователя Google . Это почти то же самое, что и подход ANDROID_ID, но для доступа требуется пользовательское разрешение (Android 6.0+). Приложения, которые используют экосистему учетной записи Google (например, рекорды и достижения в играх), могут, таким образом, следовать за конкретным пользователем и получать больше информации, чем только то, установлено ли приложение или нет.

2, 3 и 4 требуют подключения к сети и сервера на стороне разработчика.

ответил GiantTree 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 25 Sep 2016 18:21:21 +0300 2016, 18:21:21
2

Он не связан с хранилищем, а с облаком. Вот как он помнит, даже если вы удалили свои данные. Чтобы отключить это, перейдите в приложение настроек вашего устройства, коснитесь учетных записей google под личным (нажмите учетную запись, которую вы хотите, если у вас несколько учетных записей), затем отключите приложения, которые вы не хотите автоматически синхронизировать.

ответил Devin Ersoy 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 25 Sep 2016 18:21:31 +0300 2016, 18:21:31
1

Существует класс SharedPreferences - https://developer.android.com/reference /android /content /SharedPreferences.html - что некоторые приложения используют для хранения данных о предпочтениях. Эти данные не удаляются при удалении приложения. Если приложение позже переустановлено, все ранее сохраненные ключи SharedPreferences все еще доступны для него.

ответил David Bennett 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 26 Sep 2016 03:05:30 +0300 2016, 03:05:30
1

Ответ GiantTree лучше всего подходит, но есть еще один момент, о котором нужно подумать. Очевидно, что это « темный шаблон », но это идентификация также может быть выполнена с помощью отпечатки пальцев определенных пользовательских данных - это можно рассматривать как вариант в его первой точке («держать файл "), но было бы сложнее обнаружить и менее удобно избегать.

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

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

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

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

ответил Neil 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 26 Sep 2016 20:33:29 +0300 2016, 20:33:29
0

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

ответил computingfreak 20 +03002016-10-20T05:12:42+03:00312016bEurope/MoscowThu, 20 Oct 2016 05:12:42 +0300 2016, 05:12:42

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132