Control Systems and Computers, N6, 2020, Статья 6

https://doi.org/10.15407/csc.2020.06.055

Bulgakova O.S., Zosimov V.V., Popravkin P.D. Storing JWT Token in Local Variables. Control Systems and Computers. 2020. № 6. C. 55-63.

УДК 004.9

А.С. Булгакова, кандидат технических наук, доцент кафедры информационных технологий, Николаевский национальный университет имени В.А. Сухомлинского, ул. Никольская, 24, Николаев 54000, Украина, sashabulgakova2@gmail.com

В.В. Зосимов, доктор технических наук, доцент, заведующий кафедры информационных технологий, Николаевский национальный университет имени В.А. Сухомлинского, ул. Никольская, 24, Николаев 54000, Украина, zosimovvv@gmail.com

П.Д. Поправкин, студент магистратуры специальности 122 Компьютерные науки, Николаевский национальный университет имени В.А. Сухомлинского, ул. Никольская, 24, Николаев 54001, Украина, E-mail: pavel.popravkin.dm@gmail.com

ХРАНЕНИЕ JWT ТОКЕНА В ЛОКАЛЬНОЙ ПЕРЕМЕННОЙ

Введение. При работе с аутентификацией в информационных системах, основанных на использовании серверов и баз данных (Клиент-серверных) возникает проблема хранения структурированной информации через сеть Интернет (формат JSON) в клиентской (фронтенд-части) программы. Сервер часто подвергается CSRF (Cross-Site Request Forgery — CSRF) и XSS (Cross-Site Scripting — XSS) атакам из-за неправильного хранения JSON веб ключа. Существует несколько вариантов сохранения структурированной информации, все они имеют свои методы защиты от атак но все равно остаются уязвимыми перед базовыми CSRF и XSS атаками.

Цель статьи. Целью статьи является показать проблему хранения структурированной информации через сеть Интернет (формат JSON) в локальном хранилище и фрагментов информации (LocalStorage), передаваемых в браузер с сайта который посетил пользователь (файлах cookie) и предложить метод сохранения JSON веб ключа в локальной переменной внутри замыкания (функции, ссылающиеся на независимые переменные). На основе авторизации пользователя показать взаимодействие JSON веб ключа с сервером, и решение основных проблем авторизации и сохранения токена (JSON Web Token — JWT).

Методы. Системный подход, анализ.

Результаты. Проведено сравнение вариантов сохранения JSON веб ключа. Проведено сравнение вариантов хранения JSON веб ключа и опасность CSRF и XSS атак на представленные методы. Описан алгоритм формирования системы безопасности с использованием JSON веб ключа сохраненном в локальной переменной внутри замыкания.

Выводы. Результаты исследования показывают, что сохранение JSON веб ключа в локальной переменной внутри замыкания (функции, ссылающиеся на независимые переменные) имеет более высокую степень защиты данных в отличии от хранения JSON веб ключа в локальном хранилище (LocalStorage) и фрагментов информации, передаваемых в браузер с сайта который посетил пользователь (файлах cookie) . Система становится полностью защищена от типичных CSRF и XSS атак. JSON веб ключ в памяти не может быть получен при XSS атаке, потому что он не сохраняется в локальном хранилище, также существует защищенность от CSRF атак, потому что каждый JSON веб ключ не может быть отправлен автоматически с фрагментами информации, передаваемыми в браузер с сайта который посетил пользователь, потому что токен сохраняется в памяти и отправка происходит как заголовок в каждом запросе к серверу. Система защиты при сохранении JSON веб ключа в локальной переменной имеет более гибкую архитектуру благодаря улучшению контроля над сущностью JSON веб ключа.

Загрузить полный текст в PDF (на английском).

Ключевые слова: JWT, сохранение токена, локальная переменная, Сookie, LocalStorage, CSRF атака, XSS атака.

Поступила 27.10.2020