Безопасное получение данных пользователя при аутентификации пользователя

Потратив некоторое время на чтение об аутентификации и заметив, что это довольно сложно сделать хорошо, я решил использовать аутентификацию firebase для аутентификации моих пользователей в моем приложении vue.

Я перечисляю технологии и потоки, которые я использую в этом приложении, чтобы показать взаимодействие каждой части и прояснить ситуацию:

  1. Я использую Vue для своего клиентского javascript-клиента
  2. Пользователи, входящие в систему клиента, используют аутентификацию firebase.
  3. Когда пользователь входит в систему, выполняется вызов API-интерфейса rest node.js и извлекается json-файл с его пользовательскими данными.
  4. Когда данные извлекаются клиентом, приложение показывает одни части и скрывает другие в зависимости от прав пользователя.

Итак, в моем приложении Vue я показываю настраиваемую форму входа и использую ее для аутентификации пользователей через firebase. После входа пользователя в систему я получаю некоторые данные со своего собственного сервера (просто json с разными значениями конфигурации пользователя), которые определяют, как пользователь может взаимодействовать с приложением (например, что он может или не может делать в моем приложении ).

Как я могу получить эту информацию и безопасно использовать ее в моем клиентском приложении ?. Я имею в виду, например, что у меня есть часть информации в этом JSON, которая определяет, является ли пользователь обычным пользователем или пользователем с правами администратора. Как я могу избежать того, чтобы пользователи изменяли ответ сервера и повышали привилегии?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Что вы можете сделать, так это предотвратить несанкционированный доступ к серверу. Это цель определения областей действия, списков контроля доступа и т. д. Если опытный пользователь изменяет данные ответа и, скажем, меняет свою роль с user на admin, ваш ответ не должен содержать ничего, предназначенного только для пользователей-администраторов. Скорее, эта информация должна быть доступна только после, выполняющему успешный вызов API, когда код вашего сервера аутентифицировал / авторизовал запрос.

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

Как вы думаете, SSR (рендеринг на стороне сервера) может улучшить безопасность? Таким образом, клиент - просто тупой терминал

Notbad 29.07.2018 00:38

Те же принципы применимы и к SSR. В конце концов, независимо от того, отображается ли приложение в браузере или через сервер, пользователи будут иметь доступ к DOM. Хорошая вещь в SSR и безопасности заключается в том, что вы можете выполнять часть процесса, не подвергаясь воздействию внешнего мира.

DigitalDrifter 29.07.2018 01:42

Другие вопросы по теме