Вопрос об Devicecheck в iOS> 11 и о том, как обеспечить, чтобы пользователь был реальным? - PullRequest
0 голосов
/ 27 июня 2019

Я внедряю систему регистрации, которая использует SMS для аутентификации пользователя.Поскольку я плачу за каждое отправленное SMS-сообщение, я хотел бы запретить отправку 100000 запросов на мой сервер, что привело бы к отправке 100000 SMS-сообщений случайным пользователям.Я хотел бы для примера принять только 10 SMS / час / пользователь.Хотя проблема в том, что я не могу действительно идентифицировать пользователя по IP-адресу (некоторые могут использовать один и тот же IP-адрес).

Я слышал, что Devicecheck - это Apple API, который может сообщить мне на стороне сервера, если временный токен , отправленный клиентом, является реальным, с реального iPhone.Проблема в том, что я не могу сохранить количество SMS, отправленных этим токеном, потому что это временно.Единственное, что я мог сделать, это сохранить 2 бита на сервере Apple, но с 2-мя битами я не могу сохранить количество времени, которое пользователь отправил SMS в час.

Лучшее, что я могу сделать, - это сохранить "true", если пользователь отправит SMS, а затем, если они попытаются отправить SMS снова, если я увижу true в течение 1 минуты (потому что мы также можем знать в прошлый разэти биты были установлены), я мог сказать нет.Но это не то, чего я действительно хочу: если пользователь неправильно набрал свой номер телефона 3 или даже 4 раза, я не хочу заставлять их ждать.

Есть ли у вас идея хранить такую ​​информацию (n sms / h / user) с DeviceCheck?

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

  • Клиент запрашивает ключ к серверу
  • Сервер возвращает случайный ключ Клиенту
  • Клиентзашифруйте секретным способом этот ключ, который никто не может увидеть, потому что исходный код не читается
  • Клиент отправляет фактический запрос + сгенерированный токен + ключ, отправленный сервером
  • Отключ, сервер расшифровывает токен и завершается ошибкой, если токен не совпадает с отправленным ключом

Как вы думаете, такой процесс может быть надежным?

...