React ограничивает доступ к определенным пользователям

Я создаю приложение, используя реакцию и django в качестве бэкэнда. У меня настроена и работает аутентификация JWT. Но мне интересно, безопасно ли включать элементы меню и логику представлений, которые будут отображаться только для определенных пользователей и будут включать конфиденциальную информацию. Конечно, эти просмотры будут видны только соответствующим пользователям. Мой вопрос в том, может ли кто-нибудь извлечь информацию из сборки реакции? И если да, то как лучше всего избежать такой ситуации?

Почему личные данные остаются в сборке React? Разве вы не получаете его с сервера, на котором требуется авторизация?

Al.G. 19.07.2018 10:34

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

I Dav 19.07.2018 10:39

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

Al.G. 19.07.2018 10:44
Стоит ли изучать 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
3
71
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

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

Если вы даже хотите скрыть определенные экраны, чтобы пользователи не могли видеть определенные функции в вашем приложении, которые им недоступны, вам нужно либо связать эти экраны с другим приложением и обслуживать его по другому URL-адресу, либо вы можете динамически получать javascript, содержащий эти взгляды.

Обычно это не стоит усилий, так как вам следует сконцентрироваться на правильной проверке разрешений для вашего api.

РЕДАКТИРОВАТЬ:

Assuming i'd like to dynamically fetch the JS with the sensitive views and add those to my app, how do i do that?

Я предполагаю, что вы используете webpack 2 для объединения своего реагирующего приложения? Затем вам нужно использовать динамический импорт для частей, которые необходимо динамически загружать. Затем в django вам понадобится настраиваемое представление, которое обслуживает ваши статические файлы и проверяет разрешение на доступ к этой части вашего приложения для реагирования при запросе.

Этот учебник объясняет, как отложить загрузку компонентов с помощью webpack 2.

Предполагая, что я хочу динамически получать JS с конфиденциальными представлениями и добавлять их в свое приложение, как мне это сделать?

I Dav 19.07.2018 10:44

Я предполагаю, что вы кодируете роли пользователей в самом токене JWT и уточняете его, используя что-то вроде jwt-decode, а затем сопоставляете роли для рендеринга различных компонентов.

Например, вы могли бы сделать что-то вроде проверки роли администратора и отобразить ссылку на панели навигации для маршрута / admin, что я считаю безопасным. Но что, если пользователь заглянет в ваш код и увидит, что существует маршрут / admin, и попытается получить к нему доступ?

Таким образом, у вас также должна быть логика внутри маршрута, чтобы проверять роль «admin» и выдавать что-то вроде «404», если роль не совпадает.

Вы можете динамически получать любой маршрут после совпадения роли пользователя.

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