Я знаю аутентификацию на основе файлов cookie. Флаг SSL и HttpOnly может применяться для защиты аутентификации на основе файлов cookie от MITM и XSS. Однако для защиты его от CSRF потребуются дополнительные специальные меры. Они немного сложнее. (ссылка)
Недавно я обнаружил, что JSON Web Token (JWT) довольно горячий как решение для аутентификации. Я знаю информацию о кодировании, расшифровке и проверке JWT. Тем не менее, я не понимаю, почему некоторые веб-сайты/руководства не нуждаются в защите CSRF, если используется JWT. Я прочитал довольно много и попытаюсь подытожить проблемы ниже. Я просто хочу, чтобы кто-то мог представить большую картину JWT и прояснить концепции, которые я неправильно понял о JWT.
-
Если JWT хранится в cookie, я думаю, что он такой же, как аутентификация на основе cookie, за исключением того, что серверу не нужно иметь сеансы для проверки cookie/токена. По-прежнему существует риск для CSRF, если не будет применена специальная мера. Разве JWT не хранится в cookie?
-
Если JWT хранится в localStorage/sessionStorage, тогда никакие файлы cookie, поэтому не нужно защищать от CRSF. Вопрос заключается в том, как отправить JWT на сервер. Я нашел здесь, предлагая использовать jQuery для отправки JWT по HTTP-заголовку запросов ajax. Таким образом, только аутентификации ajax могут выполнять аутентификацию?
-
Кроме того, я обнаружил, что еще один blog показывает использование "заголовка авторизации" и "несущей" для отправки JWT. Я не понимаю метод, о котором говорит блог. Может ли кто-нибудь объяснить больше о "заголовке авторизации" и "несущей"? Означает ли это, что JWT передается HTTP-заголовком ВСЕХ запросов? Если да, то как насчет CSRF?