AuthProvider | Я могу переключаться между ролями, редактируя переменные localStorage - PullRequest
0 голосов
/ 03 апреля 2019

Я разработал панель для своего клиента, чтобы отслеживать некоторые параметры его бизнеса. Лишь немногие из них будут доступны своим пользователям.

Итак, я создал панель в React-Admin, а затем добавил две разные роли ( admin и user ), которые имеют доступ к совершенно разным разделам. Очевидно, что роль администратора имеет более высокие привилегии, и для этой роли отслеживается больше параметров.

Итак, я в основном скопировал код из docs (раздел Настройка поставщика аутентификации, src/authProvider.js), и он работает правильно. Однако я могу переключаться между обеими ролями, просто вручную редактируя переменную role в localStorage .

Я имею в виду, я вхожу как пользователь , открываю Dev Tools, захожу в Local Storage, вручную меняю роль = user на роль = admin, обновляю, и я могу просматривать разделы, которые назначены для admin ролей.

Я что-то не так делаю (вероятно, так как это мой первый проект с React-Admin)? Или это может быть проблема безопасности?

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

Заранее спасибо за помощь.

1 Ответ

2 голосов
/ 03 апреля 2019

Если вы не заполняете ресурсы динамически в отношении роли, которую она может прочитать, вы все равно подвергаетесь «угрозам безопасности». Можно легко увидеть все API, с которыми вы разговариваете, и начать работать над ними. Все без изменения значения в локальном хранилище. Тем не менее, если ваш API не обеспечивает проверку роли ... ну, это большая проблема. Это кровоточат данные для всех, кто знает хитрость. В конце концов, тривиально создавать запросы против известной цели. (Я знаю, что валидация роли в API немного противоречит природе JWT без гражданства, но во многих случаях это необходимо)

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

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