Постоянство аутентификации Firebase - PullRequest
0 голосов
/ 03 июля 2019

Я понимаю, что в Firebase есть метод setPersistence для сохранения сеанса пользователя. Однако мне интересно, как правильно использовать данные, хранящиеся в sessionStorage. В моем приложении после успешного входа я вызываю метод setPersistence. Затем в главном компоненте у меня есть частные маршруты, по которым я буду загружать запрошенный компонент или перенаправлять, основываясь на состоянии аутентификации, которое я проверяю в sessionStorage.

Мне интересно, однако, безопасно ли это. Разве нет способа легко взломать это, добавив ключ / значение вручную?

Должен ли я добавить дополнительную проверку, чтобы гарантировать, что данные в sessionStorage - это данные, которые ожидаются? Как правильно справиться с этим?

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Не используйте проверки на стороне клиента для обеспечения контроля доступа. Это только поверхностные проверки, независимо от используемого браузера. Единственный безопасный способ - выполнить проверку - выполнить ее на стороне сервера, передав идентификационный токен вошедшего в систему пользователя и проверив его. Firebase Admin SDK предоставляет API, чтобы помочь с этим. Или, если вы используете правила безопасности Firebase, эта проверка выполняется автоматически для вас. Если злонамеренный пользователь обходит проверку на стороне клиента, пользовательские данные (хранящиеся на вашем сервере или через Firebase RTDB или Firestore) останутся недоступными.

По сути, никогда не полагайтесь на проверки на стороне клиента для проверки статуса аутентификации пользователя.

0 голосов
/ 03 июля 2019

Вы правы в том, что это не очень безопасно. localStorage предназначен для более продвинутой замены (типа) файлов cookie. Он в основном предназначен для быстрого и постоянного хранения базовых пар ключ-значение, чтобы помочь в общем функционировании приложения / веб-сайта.

Задайте себе вопрос : Вы действительно хотите хранить конфиденциальную информацию о пользователях в файлах cookie ?

Ваш ответ будет НЕТ наиболее вероятно. То же самое с localStorage. Однако к localStorage может получить доступ только тот же источник, который его создал, что повышает уровень безопасности. Этот крошечный уровень безопасности может быть легко обойден любым человеком с единственным намерением украсть важную информацию. Это также может быть легко доступно с помощью межсайтовых сценариев, если недостаточно внимания уделено безопасности (CORS, среди прочего).

Как уже говорилось, многие приложения сегодня широко используют его для хранения информации для входа в систему, например токенов доступа и другой " частично-чувствительной " информации о пользователе. Однако вся эта информация подвергается перекрестной проверке некоторым сервером на сервере для проверки его подлинности.

Если уже есть система (встроенная в Firebase или созданная вами с помощью облачных функций) для проверки подлинности конкретного пользователя, полученного из localStorage, а также того, что с использованием только этой информации никто может получить доступ к конфиденциальной информации пользователя, тогда это не проблема.

Не может ли кто-нибудь легко взломать это, вручную добавив ключ / значение?

Да, хотя и не так просто, как может показаться на первый взгляд, это действительно возможно.

Должен ли я добавить дополнительную проверку, чтобы гарантировать, что данные в sessionStorage - это данные, которые, как ожидается, будут? Как правильно справиться с этим?

В зависимости от того, какая это информация и насколько важна ее подлинность для вас, пользователя или функционирования вашего приложения, вы можете или не хотите устанавливать систему проверки на месте.

Возможное решение: Одним из возможных решений является использование какого-либо типа шифрования для хранения данных в localStorage, например, AES, с ключами шифрования ( Ключи шифрования ) надежно хранятся на сервере или известны только пользователю.

ВАЖНО : Никогда не храните в высшей степени важную и личную информацию, такую ​​как номера кредитных / дебетовых карт, пароли и т. Д., В localStorage, независимо от того, насколько отчаянным вы получаете или насколько "безопасным" "Вы полагаете, что ваше приложение / сайт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...