170 похожих чатов

Вопрос про jwt инвалидацию. На данный момент у меня в

редис ключом является uuid токенов(аксес и рефреш). Если делают запрос на логаут или рефреш, то удаляются оба uuid из редиса. Но вот теоретически допустим
1. кто-то украл рефреш токен. заюзал его и у него теперь новая пара токенов.
2. Потом юзер у которого украли рефреш токен пробует зайти на сайт -> токен не валиден -> делает рефреш -> рефреш тоже не валиден -> делается логаут, но этих токен uuid в редис уже нет.
то есть по сути токены хакера живут своей жизнью и он их может бесконечно обновлять, а токены юзера своей.

Второй вариант это использовать айди юзера как ключ в редис и значением будет все токены этого юзера. И тот же флоу
1. Хакер украл и обновил пару токенов
2. Юзер снова делает логаут(так как рефреш токен не валиден) и тут по ключу(айди юзера) в редисе стираются токены хакера.
Все как бы круто.

Но что делать, когда один и тот же юзер будет заходить и с компьютера и с телефона, тут уже две пары токенов на одного юзера?
Поправьте, если я где-то не правильно мыслю

11 ответов

20 просмотров

На ум пришло только добавить что то вроде версии браузера или вариант платформы.Зависит от сервиса. НО это тоже геморой.

Не используйте jwt-авторизацию

В редис

DORIAN GRAY- Автор вопроса
Владимир Гришин
В редис

а есть статья с примером?

DORIAN GRAY
а есть статья с примером?

https://www.sohamkamani.com/golang/session-based-authentication/

Я бы заюзал сессии.

DORIAN GRAY- Автор вопроса
Владимир Гришин
https://www.sohamkamani.com/golang/session-based-a...

то есть этот токен должен иметь очень маленькое время жизни

DORIAN GRAY
а есть статья с примером?

Редис вроде как в один поток.

DORIAN GRAY- Автор вопроса

ну если кто-то украл токен, то они оба могут его юзать?

DORIAN GRAY- Автор вопроса

тогда по сути можно остаться на первом варианте, просто рефреш токен класть в хттп онли куки

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта