JWT. Часть 2. Проблемы

  Рет қаралды 59,488

JavaScript.Ninja

JavaScript.Ninja

Күн бұрын

Пікірлер: 68
@bakhtiyardabylov648
@bakhtiyardabylov648 7 жыл бұрын
Чувак, ты просто сверхчеловек. После первого видео о JWT и сессиях я сразу же подписался, после второго я запомнил твой канал. Теперь буду частенько заходить и ставить лайки. Главное не бросай свое творчество, у тебя хорошая осведомленность в данном деле, и, что еще важнее для ютубера, у тебя дар преподавателя. Удачи тебе и большое спасибо
@oerbyy
@oerbyy 5 жыл бұрын
+100500! Отличная подача! Спасибо Ninja!
@doter-fe8li
@doter-fe8li 6 жыл бұрын
в токен можно записать дополнительный признак пользователя. например, user-agent заголовки. для каждой машины получится отдельный токен. это в случае авторизации через веб страничку
@romanhaida5837
@romanhaida5837 7 жыл бұрын
Когда ожидать следующие части??
@МаксимПучко-ь9э
@МаксимПучко-ь9э 3 жыл бұрын
Уже есть все части, можно смотреть
@tehFSMonster
@tehFSMonster 4 жыл бұрын
Не совсем понял объяснения. Что нам даёт хранение отозванных токенов? Почему недостаточно просто заставлять пользователей перелогиниться, если выяснилась компрометация учётной записи после refresh-token?
@SmiteVils
@SmiteVils 6 жыл бұрын
Продолжай записывать, очень интересно!
@ivangolubev7308
@ivangolubev7308 4 жыл бұрын
3:01 Т.е. резюмируя - у нас есть токен, который не хранит в себе информацию о том, валидный он или нет, и у нас есть знание, что он скомпрометирован - как отозвать его? Нужно вводить доп. сущность, доп. информацию - например хранить в БД все валидные токены, или хранить в БД вообще все токены, но у невалидных будет поле isValid=false, то есть нам надо вводить централизованное хранилище, а это ни что иное, как сессия. Я прав?
@musoverda5500
@musoverda5500 7 жыл бұрын
а где обещанные следущие видосики с практикой? )
@StoneWeaver_RU
@StoneWeaver_RU 6 жыл бұрын
А продолжение-то где? Как бы уже больше полугода прошло...
@jsonslim
@jsonslim 2 жыл бұрын
Спасибо, как раз для своего проекта хотел использовать JWT, теперь буду делать сессию
@Sergey111111
@Sergey111111 3 жыл бұрын
3:09 Кредо программиста - изобретение велосипедов!
@andrewzabara68
@andrewzabara68 7 жыл бұрын
Илья мог бы ты рассказать в следующих видео о MVVM его преимуществах и недостатках
@Диваныч-ъ7ц
@Диваныч-ъ7ц 3 жыл бұрын
не особо разбираюсь в теме , пока еще даже не джун , но разве не использование в микросервисной архитектуре есть главное назначение разного вида токенов?
@----1281
@----1281 4 жыл бұрын
"а как вы будете отзывать токены с большим временем жизни вы подумали?" да, таких токенов у нас нет, что тогда? тем более в начале кейса написано, что малое время жизни
@MykolaParamonov
@MykolaParamonov 4 жыл бұрын
Меня это тоже озадачило(
@ivangolubev7308
@ivangolubev7308 4 жыл бұрын
Возможно имелись ввиду refresh Токены, у них обычно большое время жизни, и они тоже могутбыть скомпрометированы, но надо уточнять у автора видео, могу ошибаться
@SweettyDavid
@SweettyDavid 3 жыл бұрын
Very nice lessons
@sleepstream9433
@sleepstream9433 Жыл бұрын
6 лет занимаюсь бэкэндом с микросервисами, jwt с lifetime 5 минут, как его можно угнать?? Refresh token при угоне инвалидирует токен юзера, юзер перелогинится, инвалидируется токен угонщика и он больше не может ничего делать. В чем я не прав?
@JavaScriptNinja
@JavaScriptNinja Жыл бұрын
Для этого рефреш токен будет уже не jwt
@SweettyDavid
@SweettyDavid 3 жыл бұрын
Great job
@vitaliidrapaliuk5652
@vitaliidrapaliuk5652 4 жыл бұрын
Спасибо)
@brud90
@brud90 7 жыл бұрын
Фактически, можно и кукис с айди сессии угнать, но у сессий нет рефреша, а против csrf есть csrf-токен, т.е. если сравнивать голые реализации, то по безопасности особой разницы нет, верно я понял?
@JavaScriptNinja
@JavaScriptNinja 7 жыл бұрын
Anton Iliyn сессии в среднем по больнице безопаснее
@brud90
@brud90 7 жыл бұрын
Javascript.Ninja ну если чувак угонит куку с сессией, то это надолго + в jwt мы узнаем о компрометации по неверному рефреш токену
@ivsergey5150
@ivsergey5150 5 жыл бұрын
круто! ждем еще видосов
@volodymyrkorniienko8670
@volodymyrkorniienko8670 6 жыл бұрын
так а где 3-я часть?
@МаксимПучко-ь9э
@МаксимПучко-ь9э 3 жыл бұрын
Если ты еще не смотрел третью, то могу сказать, что уже вышла 4-я часть
@kasarch
@kasarch 7 жыл бұрын
Честно говоря, не вижу большой проблемы в том, что при смене секретного ключа разлогинит всех пользователей. В конце концов такая операция проделывается не по 10 раз на дню, а большая часть пользователей просто скажет "ну ок" и перелогинится.
@alexxis246
@alexxis246 5 жыл бұрын
Нет. С точки зрения пользователя - разлог раздражает и тратит драгоценные (для некоторых пользователей) минуты. Еще может оказаться так, что у пользователя, на момент разлогина, нет возможности авторизоваться (забыл блокнот с паролями).
@maratmkhitaryan9723
@maratmkhitaryan9723 4 жыл бұрын
@@alexxis246 Если пользователя раздражает разлогин 1 раз в год из-за утечки то ему стоит подлечить нервы. Если нету пароля то пусть восстановит через форму восстановления пароля.
@yevhenbadorov7961
@yevhenbadorov7961 4 жыл бұрын
@@maratmkhitaryan9723 но ведь нет никакой гарантии, что будет 1 утечка в год
@СергейКиселев-ю6щ
@СергейКиселев-ю6щ 2 жыл бұрын
Можно сделать секретный ключ на кластер из 1000 пользователей, таким образом не нужно хранить много ключей как в случае с сессиями, и если нужно отозвать ключ, разлогин произойдёт не у всех, а у той самой тысячи
@nikolay7081
@nikolay7081 2 жыл бұрын
@@maratmkhitaryan9723 достаточно представить, что пользователь заполнял какую-нибудь большую форму 15 минут и тут при сабмите его разлогинивает и данные придется заполнять с самого начала. правда весело?)
@ivansidorov5
@ivansidorov5 6 жыл бұрын
А мы не можем использовать сессии в AJAX?
@АнтонВасильев-т2я
@АнтонВасильев-т2я 6 жыл бұрын
Отлично
@auditusich
@auditusich 7 жыл бұрын
А для нативок можно придумать суперсекретный ключ который доступен в клиентском приложении и на сервере. Он никогда не передается по сети. Рефреш токен при отправке клиенту шифруется этим ключом. Если хакер угонит рефреш, то ему придется еще и копаться в байткоде что бы найти суперсекретный ключ. Правда это добавит головной боли как хакеру так разработчику
@MK-we4dl
@MK-we4dl 4 жыл бұрын
Не пойму что-то. Как можно сделать кросс-сайт атаку если кука подписана ключем на сервере о котором знает только сервер? Ну залогинется хацкер на своем сайте, ну получит свою куку, а подпись он как сделает? И о каких нафиг хакерах идет речь когда у юзеров пароли на мониках висят. Или вообще шедевральная возможность сохранить пароль в браузере, устроился в сервис на работу и сливай пароли с каждого устройства.
@sleepstream9433
@sleepstream9433 Жыл бұрын
кука не шифруется никаким образом, поэтому и получается получить все токены со всеми потрахами, но от csrf куку можно защитить политиками браузера.
@gen7891
@gen7891 3 жыл бұрын
Проблемы в том что сессию надо создавать на сессии. И jwt не надежный. Можно резюмировать так.
@ДилэймНиколсон
@ДилэймНиколсон 7 жыл бұрын
Категорически не согласен с тем, что если в токене хранить только ID пользователя, а за остальными данными обращаться в БД, то это выходят те же сессии. В случае с сессиями мы получаем Session ID, дальше из БД/файлов/ещё-чего-нибудь получаем связанного с ней пользователя. В случае же с JWT у нас отпадает лишнее звено в виде проверки сессии вне сервера. В то же время хранить абсолютно все необходимые данные о пользователе в JWT просто невозможно. Как-минимум потому-что если у вас появляется какое-то новое поле, то придётся заставлять всех пользователей перелогиниваться, что бы приложение корректно работало.
@JavaScriptNinja
@JavaScriptNinja 7 жыл бұрын
Как вы проверите сценарий отозванного токена без обращения в БД?
@ДилэймНиколсон
@ДилэймНиколсон 7 жыл бұрын
"Буду хранить в токене только ID, а всё остальное на сервере в хранилище" - вы имели в виду id сессии или id пользователя?
@JavaScriptNinja
@JavaScriptNinja 7 жыл бұрын
А это неважно и деталь реализации. Что так что так вам надо получить связанного пользователя по какому-то ключу. Будет ли это session id или user id - совершенно ничего не меняет
@ДилэймНиколсон
@ДилэймНиколсон 7 жыл бұрын
По поводу инвалидации токена вы правы, надо как-то хранить информацию об этом либо на сервере либо в самом токене. Тем не менее хранить в токене всю необходимую информацию о пользователе неразумно, потому что набор этой необходимой информации меняется в процессе разработки приложения, вам в любом случае разумнее получать связанного пользователя извне по ключу
@JavaScriptNinja
@JavaScriptNinja 7 жыл бұрын
Я ж и не против :)
@АсланКосшанов
@АсланКосшанов 3 жыл бұрын
А этот хакер случайно не Профессор из сериала Бумажный дом?
@eugenesternin6039
@eugenesternin6039 6 жыл бұрын
скомпрометирован, не скомпромеНтирован
@lollolich2399
@lollolich2399 Жыл бұрын
А что если мы будем хранить в рефреш токене ip адрес и девайс, с которого произошёл логин, и шифровать этот токен. Далее представим злоумышленник украл рефреш токен и пытается получить новый рефреш токен. Об cодержание токена, то есть об ip адресе и девайсе ему ничего не известно в силу того, что токен - это какая-та зашифрованная строка. Мы получаем от него украденный рефреш токен, дешифруем его, сверяем айпи адрес и девайс запроса с соответствующими значениями в токене, если проверка не прошла, то отклоняем запрос, иначе, то есть запрос на новый рефреш токен делает исходный юзер, что и получил изначальный рефреш токен, тогда выдаём новый рефреш токен. Какие подводные камни у такой схемы?
@blackobemamatters4418
@blackobemamatters4418 Жыл бұрын
Тогда юзер не сможет логинитса на наш сайт с другого устройства(например с телефона).
@ломастер
@ломастер 5 жыл бұрын
🤯
@sivkaburka1062
@sivkaburka1062 2 жыл бұрын
Досмотрел до конца
@МаксимСеливанов-ь6н
@МаксимСеливанов-ь6н 6 жыл бұрын
Дружище, "скомпромеНтирован" не есть гуд) Скомпрометирован же! Успехов и роста)
@SergeiSokolov22
@SergeiSokolov22 3 жыл бұрын
JWT произносится "jot" /dʒɒt/
@fedorkuruts
@fedorkuruts Жыл бұрын
Меня иногда пугают фоны. Вроде умный дядька. Рассказывает хорошо, а живёт хрен знает где. Какое то кресло убитое, шкаф. Вот и учись на программиста ...
@JavaScriptNinja
@JavaScriptNinja Жыл бұрын
Вы на новые фоны посмотрите :)) Это видео у родителей записывалось :))
@fedorkuruts
@fedorkuruts Жыл бұрын
@@JavaScriptNinja Купи родителям кресло нормальное)))
@JavaScriptNinja
@JavaScriptNinja Жыл бұрын
@@fedorkuruts Сейчас иные приоритеты
@XenonIPC
@XenonIPC 4 жыл бұрын
автор, главная проблема только одна: Вы плохо понимаете механизмы работы и АБСОЛЮТНО некорректные делаете выводы. Здравые рассуждения начинаются только на 6й минуте, когда задаете вопрос "Где хранить токены?" (и что в local storage этого делать нельзя). По сути это главная и пожалуй единственная проблема jwt. Я бы мог расписать каждый пункт и показать ошибочность суждений и выводов, но это долго. Надеюсь что за эти 3 года автор вырос в своих познаниях, но тогда странно почему это видео не скорректировано и не перезалито...
@JavaScriptNinja
@JavaScriptNinja 4 жыл бұрын
Не вырос :) Даже деградировал и в ряде сценариев одобряю хранение токенов в localstorage :)
@tehFSMonster
@tehFSMonster 4 жыл бұрын
Проблема токенов в том, что их можно угнать. И уже только одно это их компрометирует.
@DmitryPolovka
@DmitryPolovka 4 жыл бұрын
Если вы собрались комментировать что тут неправильная информация, тогда уже пишите о том как сделать лучше
@vsezanyato
@vsezanyato 3 жыл бұрын
Думаю всем была бы полезна информация о том, что в этом видео ошибочно. Хотя бы вкратце ..
@sleepstream9433
@sleepstream9433 Жыл бұрын
@@tehFSMonster токены в куках угнать нельзя, если вы нормально изучите вопрос
@dmitryprokofyev1473
@dmitryprokofyev1473 5 жыл бұрын
Красивый цвет помады
@Antonio-fm1sq
@Antonio-fm1sq 3 жыл бұрын
Спасибо!
JWT. Часть 3. Сервер
51:18
JavaScript.Ninja
Рет қаралды 53 М.
JWT. Часть 1. Теория
15:50
JavaScript.Ninja
Рет қаралды 157 М.
Hilarious FAKE TONGUE Prank by WEDNESDAY😏🖤
0:39
La La Life Shorts
Рет қаралды 44 МЛН
Andro, ELMAN, TONI, MONA - Зари (Official Audio)
2:53
RAAVA MUSIC
Рет қаралды 8 МЛН
«Жат бауыр» телехикаясы І 30 - бөлім | Соңғы бөлім
52:59
Qazaqstan TV / Қазақстан Ұлттық Арнасы
Рет қаралды 340 М.
Why is JWT popular?
5:14
ByteByteGo
Рет қаралды 350 М.
LLM + RAG: ингредиенты приготовления умного ИИ-ассистента
31:48
Клуб разработчиков СПб
Рет қаралды 1,9 М.
JWT vs SID
16:11
Владимир Башун
Рет қаралды 1,3 М.
What Is JWT and Why Should You Use JWT
14:53
Web Dev Simplified
Рет қаралды 1,2 МЛН