Использование JWT вместо Cookie на сайте с поддержкой SSL

Вместо использования файла cookie я использую токен JWT, который отправляется с каждым запросом. Каждый запрос является POST-запросом, чтобы токен не сохранялся в истории браузера.

Это одностраничное приложение.

Токен выглядит так:

{
    userId: 12345678,
    expires: <UNIX timestamp>,
    otherInfo: <something>
}

Все защищено SSL. Маркер создается на сервере при входе пользователя в систему.

Будет ли это хорошим способом заменить файл cookie или вы видите какие-либо недостатки?


person xrDDDD    schedule 18.07.2013    source источник
comment
Почему история браузера может быть проблемой для одностраничного приложения даже для запросов GET? Запросы AJAX не попадают в историю браузера. Но лучше в любом случае поместить токен в заголовок авторизации, чтобы он случайно не появился в журналах доступа, если вы все-таки используете GET.   -  person Vilmantas Baranauskas    schedule 30.11.2015


Ответы (1)


Нет, это не очень хорошее решение. Использование файлов cookie (с флагом httpOnly) для сохранения перекрестных запросов не является необязательным — это единственный способ безопасного хранения учетных данных сеанса таким образом, чтобы код JavaScript на странице не мог получить к ним прямой доступ.

Это необходимо для предотвращения, например. кража сеанса при атаке XSS, гарантируя, что скрипты не могут получить доступ к учетным данным, но их все еще можно использовать в запросах к серверу.

Ваше использование JWT, похоже, также не решает проблему - почему вы не можете просто использовать файлы cookie сеанса, используя существующую реализацию сеанса? Именно для таких вещей они и созданы.

person Sven Slootweg    schedule 14.09.2016