JWT и сессии
...буду изменять ключ подписи, когда пользователь был скомпрометирован Это сработает, но каждый раз вы будете проверять всех пользователей! ...но я же могу сделать ключ для каждого пользователя уникальным! ...буду хранить список отозванных токенов и проверять его при аттестации Это сработает, но что вы будете делать если хранилище отозванных токенов недоступно? считать все токены некорректными... Таким образом когда злобный хакер лишит вас доступа к хранилищу вы не сможете отобрать у него токен ...буду хранить в токене только ID, а все остальное — на сервере в хранилище Отличное решение! Поздравляем, вы только что переизобрели сессии со всеми их проблемами, и не получили ничего взамен... Кроме странной реализации записи сессий! ...буду использовать малое время жизни, так что у токена не проблема Это сработает, но если пользователь уходит в оффлайн на пару минут его выкинет... Я буду использовать отдельный refresh-токен ...а как вы будете отзывать токены с большим временем жизни вы подумали? ...буду хранить токены в LocalStorage... Удобно и куча места Ок, а как вы собираетесь обеспечивать Server-Side Rendering. И безопасность? Cross-Site Request Forgery. А еще 4 килобайта места на всё про всё... Ок, возьмем cookie
Блок-схема высмеивает попытки решить проблемы JWT: отзыв токенов, компрометацию ключа, срок жизни, refresh-токены и хранение в LocalStorage. Каждое решение порождает новую проблему, а в конце разработчик возвращается к cookie и фактически переизобретает сессии. Мем используют как реакцию на чрезмерно сложную или небезопасную архитектуру аутентификации. EN: A flowchart mocks attempts to solve JWT problems: token revocation, key compromise, expiration, refresh tokens, and LocalStorage storage. Each solution creates a new problem, and in the end the developer returns to cookies and effectively reinvents sessions. The meme is used as a reaction to an overly complicated or insecure authentication architecture.
flowchart / блок-схемаarrows / стрелкиtext boxes / текстовые блокиJWT token / JWT-токенsession / сессияrefresh token / refresh-токенsigning key / ключ подписиrevoked token list / список отозванных токеновserver storage / серверное хранилищеLocalStorage / LocalStoragecookie / cookiesecurity diagram / схема безопасностиauthentication architecture / архитектура аутентификации
- @infosecmemes / 286 2020-06-29
- Type
- image
- Size
- 800×450 · 72.1 KiB
- Mood
- саркастичный, абсурдный
- Language
- ru
- Added