Зберігання чутливих даних на клієнтській стороні завжди викликає питання безпеки. Хоча багато хто використовує локальне сховище для зберігання даних у своїх фронтенд-застосунках, це не найкращий вибір, якщо мова йде про чутливу інформацію. Локальне сховище доступне для кожного через консоль розробника або за допомогою JS-коду, що робить його вразливим для атак.
Одним з варіантів може бути асиметричне шифрування даних у локальному сховищі, але це все одно не вирішує проблему безпеки. Якщо хакер отримає доступ до даних, він може використати їх до того моменту, поки сервер не перевірить запити через CSRF.
Іншим способом є зберігання даних у куках на сервері. Тут варто розуміти, що фронтенд може взаємодіяти з куками — оновлювати, видаляти та переглядати їх. Існує два основних типи куків, які можуть бути використані:
Non-HTTP Only cookie
Цей тип cookie працює схоже на локальне сховище, тобто клієнтський JS може взаємодіяти з його значеннями. Отже, зберігання чутливих даних у non-http cookie не є оптимальним рішенням через можливі загрози безпеці.
HTTP Only Cookie
Коли cookie встановлюється сервером з атрибутом HTTP-only, його не може бути доступно зі сторони клієнта, що робить його більш безпечним. Такі cookie захищають чутливу інформацію, наприклад, ідентифікатори сесій або токени автентифікації, від маніпуляцій на клієнтській стороні.
Загалом, найкращою практикою є уникати зберігання чутливих даних на клієнтській стороні, якщо це можливо. Але якщо потрібно зберігати якусь інформацію, варто використовувати такі методи, як шифрування, токенізація або контекстне використання сховища для забезпечення додаткового захисту.
Перекладено з: How to store sensitive data on the client side?