Как я могу помешать людям неправильно использовать свой JWT для создания недопустимых запросов к конечным точкам API? - PullRequest
0 голосов
/ 17 апреля 2020

В настоящее время я работаю над сайтом, на котором впервые применяю JSON веб-токены в качестве метода проверки. Однако я столкнулся с проблемой, которую не знаю, как эффективно ее решить. Я использую Nuxt JS (Vue) для моего внешнего интерфейса и Nodejs для моего внутреннего интерфейса.

Как я использую JWT: Я использую JWT, позволяя людям получать доступ к конечной точке входа в систему в моем бэкэнде, где я авторизую их по имени пользователя и паролю. После того, как они введут правильную комбинацию, я возвращаю им JWT и сохраняю его как повар ie (токен = токен JWT здесь) со временем истечения.

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

Проблема: Теперь моя проблема заключается в том, как я могу запретить вошедшему в систему пользователю делать собственные запросы в своем JWT, который они могут видеть из файлов cookie в их браузер, и затем они могут вводить любую информацию, которую они хотят, даже значения, которые не из выпадающего списка, который я имею в веб-интерфейсе. Другими словами, как я могу помешать им сделать запрос «вокруг» моего интерфейса в такой программе, как, например, Postman.

Я знаю, что могу просто добавить logi c в бэкэнд, который проверяет ВСЕ допустимые значения, которые пользователи могут выбрать из выпадающего списка во внешнем интерфейсе, а затем просто отклонить любой другой ввод, однако я считаю, что это не оптимальное решение. Я что-то здесь упускаю? Я очень новичок во всем аспекте JWT, а также безопасности, так что это что-то вроде джунглей. Я пытался объяснить все так хорошо, как только мог, но, пожалуйста, спросите, если вам нужна дополнительная информация, чтобы помочь!

Спасибо.

...