можно изменить Settings.Secure.ANDROID_ID? - PullRequest
0 голосов
/ 13 мая 2019

У меня есть приложение для Android, доступное в google play с около 5 тысячами ежедневных пользователей.
У меня странная ошибка, связанная с аутентификацией в firebase, это что-то необычное, поэтому, пожалуйста, внимательно прочитайте, прежде чем делать выводы:

Я использую Android_ID в качестве идентификатора для пользователей моего приложения Settings.Secure.getString(getContentResolver(), Settings.Secure.ANDROID_ID)

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

НО НЕКОТОРЫЕ ПОЛЬЗОВАТЕЛИ ПОЛУЧАЮТ ДОСТУП ОТКРЫТЫХ, КОГДА ПЫТАЮТСЯ ЧИТАТЬ ИХСОБСТВЕННЫЕ ДАННЫЕ ...

Это выглядит очень странно, и первая идея состоит в том, что в моем коде есть ошибка, но после отладки я не смог найти никакой ошибки, поэтому я начал регистрировать запросы

и мои журналы показали что-то вроде этого

D/CrashlyticsCore check firebase access denied: device_id: e4c511c3-8ed7-3430-b3b0-e16d56acd2ad auth: da190696-e4bc-32f9-b229-eb24631a39fc

В этом сообщении говорится, что пользователь прошел проверку подлинности: da190696..., но знает, что его значение идентификатора: e4c511c3...

Iтакже заметил, что отказ в доступе обычно происходит после того, как приложение было свернуто

, поэтому вопрос: есть ли объяснение этому?Можно ли пользователю изменить device_id на некорневом устройстве?возможно ли как-то это было рандомизировано андроидом?

1 Ответ

1 голос
/ 13 мая 2019

Вы не должны использовать Settings.Secure.ANDROID_ID для этого. Прочтите это для получения дополнительной информации. Значение может измениться в различных обстоятельствах.

Вы также сказали, что «я могу написать правила Firebase, которые блокируют пользователей от просмотра данных других пользователей на основе ихANDROID_ID».Это не может быть безопасным, так как клиент не обязан предоставлять предполагаемую стоимость Firebase.Кто-то может поставить под угрозу ваше приложение или устройство для отправки любого значения, которое он хочет.

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

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