#node.js #reactjs #security #role-based-access-control
#node.js #reactjs #Безопасность #управление доступом на основе ролей
Вопрос:
Недавно я видел видео, в котором они использовали react с node / express сзади, чтобы выполнить авторизацию на основе ролей. В этом случае, как только пользователь проходит аутентификацию, его роль задания передается в качестве ответа интерфейсу react, который затем сохраняется в состояниях и используется для соответствующего отображения страниц. Итак, насколько безопасен этот подход? Возможно ли, чтобы кто-то вроде обычного пользователя подделал ответ, поступающий с сервера, и изменил его на что-то вроде «admin». Или есть какой-то другой подход, который является более безопасным. Пожалуйста, помогите мне, так как я довольно новичок в этих темах.
Ответ №1:
Правило № 1 — Никогда не доверяйте ничему со стороны клиента.
Любая информация, передаваемая на сторону клиента, предназначена исключительно для отображения.
Каждая модификация на серверной части должна содержать проверку данных перед их вставкой / обновлением в базу данных или перед их использованием в каких-либо целях для предполагаемого пользователя.
Пользователь может изменить роль, чтобы увидеть другой пользовательский интерфейс, но пользовательский интерфейс никогда не должен пытаться извлекать информацию, которая не предназначена для пользователя, или принимать какие-либо данные от этого пользователя, если пользователь не является законным пользователем.
Ответ №2:
Возможно ли, чтобы кто-то вроде обычного пользователя подделал ответ, поступающий с сервера, и изменил его на что-то вроде «admin»
Да, они могут. Состояние реакции — это просто JavaScript, и как пользователь они всегда могут изменить это значение состояния в своем браузере.
насколько безопасен такой подход?
Эта проблема зависит от того, как вы защищаете на стороне сервера. Пользователь всегда может изменить запрос к серверу. Проверка того, является ли запрос действительным или нет, является задачей сервера. Например, при использовании JWT, когда запрос поступает на сервер, серверу необходимо проверить, действительно ли пользователь является администратором или нет, прежде чем выполнять какое-либо задание.
В общем, сохранение роли администратора или чего-то подобного во внешнем интерфейсе обычно используется для отображения данных. Вы всегда можете выполнить некоторую проверку ввода перед отправкой запроса на сервер, но ПРОВЕРКА ЗАПРОСА на сервере является обязательной