Есть ли способ защитить маршрут API от попадания аутентифицированного пользователя за пределы приложения, выполняющего запросы? - PullRequest
0 голосов
/ 25 апреля 2019

Я делаю угловое приложение, в которое пользователи входят, делают успехи, а затем им присваиваются уровни / очки опыта. Я использую API-интерфейс nodejs / express и хочу, чтобы из моего приложения можно было позвонить и наградить их опытом. Я использую JWT и подписывание сервера закрытым ключом для аутентификации запросов, но понял, что пользователь может просто извлечь свой токен и получить опыт. Мой вопрос был бы так или иначе, чтобы защитить мой маршрут от этого или это фундаментальный недостаток в дизайне?

1 Ответ

0 голосов
/ 25 апреля 2019

Я не верю, что это то, что вы можете сделать специально с JWT.Как уже сказали комментаторы, JWT просто предоставляет права доступа для данного токена.Как вы говорите сами, было бы достаточно просто прочитать трафик и отправить свои собственные запросы, чтобы поднять их опыт.

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

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

Вы можете использовать дополнительные проверки и меры - ваши запросы на [увеличение] будут двухэтапным процессом;сервер отвечает на первоначальный запрос некоторой незначительной задачей, которая должна быть решена, которая затем присоединяется к последующему запросу.При условии, что задача выполнена правильно, вы можете быть достаточно уверены, что она пришла из вашего приложения, поскольку ваше приложение знает, как решить возникшие проблемы (или кто-то с серьезным отсутствием хобби вне деконструкции всего вашего приложения).

Вы можете ограничить объем опыта, который должен быть разумно достигнут вашими пользователями.Если вы знаете, что люди должны, в лучшем случае, иметь возможность получить xyz exp в минуту / час / день / и т. Д., То, отслеживая рост опыта, вы можете пометить и / или заблокировать дополнительный прирост после этой точки.

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