API SafetyNet, получить одноразовый номер от сервера, а не от клиента
Я использую эту библиотеку: https://github.com/scottyab/safetynethelper
Я прочитал документацию на сайте Android Deveoloper и в репозитории. Все отлично работает, но что-то мне не понятно. Указывается, что более безопасно получать одноразовый номер с сервера, а не создавать его в собственном приложении. И почему лучше передать ответ от API SafetyNet на сервер
1 ответ
Чаще всего API-интерфейс аттестации SafetyNet используется для определения того, доверяете ли вы устройству и приложению, которое обменивается данными с вашим сервером.
Таким образом, вы на самом деле не хотите проверять ответ JWS в вашем приложении для Android, иначе злоумышленник может просто изменить ваше приложение, чтобы удалить любую проверенную логику проверки. Вот почему лучше передать ответ на сервер и принимать там какие-либо решения (вы доверяете своему серверу).
На своем сервере вы можете проверить ответ и, если все выглядит хорошо, разрешить любое действие, которое вы пытаетесь защитить - возможно, разрешить вход или загрузку определенных данных.
Почему одноразовый номер, предоставляемый с вашего сервера, более безопасен? Одноразовый номер, сгенерированный в вашем приложении (т. Е. По существу случайный и неизвестный вам), может быть легко изменен злоумышленником. Лучше, если вы контролируете одноразовый номер! Таким образом, когда вы проверяете ответ JWS на вашем сервере, вы можете проверить правильность одноразового номера.
Хороший подход для генерации одноразового номера на вашем сервере может заключаться в хешировании идентификатора сеанса или комбинации идентификатора пользователя и метки времени.