🔗По мотивам предыдущего поста про base64. Если бегло пробежаться по гитхабу, то можно найти дохрена примеров отзыва JWT токена через добавление его как есть в черный список. In-memory или в redis какой-нибудь. Прямо в base64 форме.
Проблема в том, что два токена:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.CDfhHu9_n2jSQGHcUwmSgZLL1OKEGjK4hw6D3Q40MA0
и
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.CDfhHu9_n2jSQGHcUwmSgZLL1OKEGjK4hw6D3Q40MA1
оба валидны (можете сами проверить на
https://jwt.io/ секретный ключ - secret6). И если добавить в черный список только один, то можно поправить один символ и ходить на апи дальше.
Если вы думаете, что люди так делать не будут, то ошибаетесь. Я спросил в чате про го народ как они блочат токены и первый ответ был именно такой. Или вот библиотека на гитхабе на 13 тысяч звездочек
https://github.com/feathersjs/feathers и в документации у них написано делать именно так
https://docs.feathersjs.com/cookbook/authentication/revoke-jwt.htmlПо сути это у кучи народу дыра в безопасности. На практике она минорная и хрен заэксплуатируешь, баунти за неё не получишь, а ходить репортить просто так лично мне лень.
Вот такое вот IT-говно.