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





Ваш код 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 с конфиденциальными представлениями и добавлять их в свое приложение, как мне это сделать?
Я предполагаю, что вы кодируете роли пользователей в самом токене JWT и уточняете его, используя что-то вроде jwt-decode, а затем сопоставляете роли для рендеринга различных компонентов.
Например, вы могли бы сделать что-то вроде проверки роли администратора и отобразить ссылку на панели навигации для маршрута / admin, что я считаю безопасным. Но что, если пользователь заглянет в ваш код и увидит, что существует маршрут / admin, и попытается получить к нему доступ?
Таким образом, у вас также должна быть логика внутри маршрута, чтобы проверять роль «admin» и выдавать что-то вроде «404», если роль не совпадает.
Вы можете динамически получать любой маршрут после совпадения роли пользователя.
Почему личные данные остаются в сборке React? Разве вы не получаете его с сервера, на котором требуется авторизация?