Делаю веб приложение на react и сервер на express sequelize mysql, когда пользователь логинится ему дается jwt токен и авторизация запросов на сервер для взаимодействия с бд происходит через токен, но если мне надо чтобы допустим человек на клиенте нажимает кнопку получить 30 бесплатных монет, соответственно надо отправить на сервер запрос на изменение количества монет в бд у юзера, но для авторизации же передается только токен и человек может тупо его взять из заголовка и также отправить запрос и изменить себе деньги, так как авторизировать запросы именно от сервера, чтобы посторонний не мог взаимодействовать с бд. Точнее как принято это делать
Mi7kiro, ну значит всё правильно настроено - что именно тебя смущает в этой схеме? Да - юзер может подсмотреть в DevTools свой auth токен и может сам слать запросы на сервер симулируя обычный клиент - от этого ты защититься не можешь никак. Ты можешь попытаться усложнить взломщику жизнь шифруя содеримое запросов ассиметричным ключом, публичная часть которого будет спрятана где-то в коде клиента, а приватная будет в конфигах сервера, но это не гарантирует того что вломщик не найдёт твой публичный ключ и не сможет подделывать запросы, но это может отсеять совсем уж мамкиных хацкеров. Но вообще в таких случаях на сервере надо делать проверки которые сделают бессмыссленным подделывание запросов - например если получать бесплатные монеты можно только 1 раз в сутки, то надо на сервере проверять если пользователь уже в эти сутки получал монеты то не выдавать ему больше, таким образом взломщик может сколько угодно раз слать этот запрос, но монеты ему будут приходить только 1 раз в сутки.
vtlstolyarov, я придумал такую штуку, что при отправке запроса создается еще один jwt, только временный на 1 секунду и отправляется вместе с обычным, там так же проверяется и на всякий случай добавляется в бд с невалидными токенами