то считают токен валидным?
Это значит что можно не проверять токен на то чем оно подписано
Ага, самая тупая из атак на поле alg Передаешь свой сфабрикованный токен, либа берет алгоритм для проверки из самого токена - видит none - и считает токен валидным У Auth0 был анекдот в том, что один раз они закрылись - перестали позволять "none" и "None" - но оказалось, что пропускают "NoNe" - что тоже дальше отрубало проверку подписи Есть еще куча подобных атак, например с подменой RSA на HMAC - и тогда можно подписать сфабрикованный токен публично доступным ключом JWT вообще весь из дыр кажется состоит
А ведь еще целый зоопарк дыр из-за кривого дизайна библиотек, особенно для жабаскрипта Для декодирования jwt дается два метода - decode и verify Как это выглядит в нормальных API - verify только проверяет подпись, decode - декодирует с верификацией Как это выглядит в js - verify - декодирует с верификацией, decode - декодирует тупо игноря подпись - а в итоге в куче либ тупо зовут decode
JWT это просто коробка для данных средней степени поганости
Нет. Уже в своей самой простой форме (header/payload/signature) торчит зависимость верификации signature от содержимого header. Doomed to fail. Сверхгибкость - первородный грех в криптографии.
RSA256 хватит всем?
Так надо валидировать и хэдер в том числе на поддерживаемые alg
v1 - RS-256-only, стало не хватать - выпускай v2 ES-512-only
ну тогда надо версию куда-то зашивать в хедеры
Обсуждают сегодня