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