Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как сделать безопасный вход с помощью UDID или токена устройства?

Автор вопроса: Erik BОтветов: 2

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

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

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

  • Что вы ожидаете, когда пользователь, который владеет несколькими устройствами или самостоятельно заменяет свое устройство, попытается использовать ваше приложение? Jonah 12.01.2011
  • Хороший момент. Я планировал дать пользователям возможность зарегистрировать свой адрес электронной почты. Вы вполне можете связать несколько идентификаторов устройств с одним и тем же пользователем, используя адрес электронной почты для их проверки. Erik B 12.01.2011

iphoneandroidsecurityudidlogin

Ответы

Ответ 1 · рейтинг 5 · Seva Alekseyev

Теоретически вы не можете. Идентификатор устройства не является особо секретным, и в большинстве случаев его можно легко подделать. Что касается Android, то в этой ОС вообще нет надежного идентификатора устройства - см. подробности здесь: Есть ли уникальный идентификатор устройства Android?

Все, на что вы можете положиться, - это безопасность через неизвестность, надеясь, что никто не будет настолько решителен, чтобы реконструировать код и проанализировать протокол аутентификации. И не раскрывать код не вариант - ведь вы же распространяете приложение.

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

Для более надежного решения аутентифицируйте пользователей, а не устройства. Это зависит от ваших клиентов и характера бизнеса.

Ответ 2 · Elzo Valugi

Я не эксперт по Android, но код IMEI считаю уникальным для устройства. Я не знаю, хотя, как вы можете прочитать и передать его.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы