У нас есть служба, в которой пользователь может зарегистрироваться. Этот процесс защищен reCAPTCHA для предотвращения автоматизированных регистраций. Проблема в том, что на мобильных устройствах reCAPTCHA не является удобством. Поэтому мы решили, что API регистрации также примет некоторые специальные токены вместо ответа reCAPTCHA.Замена Captcha на мобильных устройствах
Теперь вопрос заключается в том, как реализовать этот токен . Наш первый подход состоял в том, чтобы оснастить мобильное приложение некоторым постоянным секретом, который будет отправлен на сервер как токен . Но этот секрет может быть раскрыт, если хакер перенаправляет запрос на свой сервер (путем обновления DNS-записи домена API и установки его сертификата как доверенного на мобильное устройство).
Теперь наш последний подход - вычислить токен как HMAC-SHA1 на имя пользователя + secret (нужен ли нам здесь secred - возможно, только для того, чтобы сделать ввод достаточно длинным?). Имя пользователя будет взято из входа регистрации. Тогда сервер будет авторизовать его, проверив хэш. В его случае можно было бы сделать повторную атаку, но это нормально, потому что дублируемое имя пользователя будет отклонено.
Правильно ли этот подход? Может быть, есть другие альтернативы для перехвата на мобильных устройствах?
Также возможно получить и перепроектировать приложение из iOS (ipa-файла), учитывая, что оно будет размещено в Appstore и извлечь ключ (и секрет)?
В случае андроида это возможно - есть ли способ предотвратить его?