Роли пользователей в SPA и безопасность Angular

Богатый RESTful бекенд, разделение пользователей по ролям, цепочка middleware's и пр.
Интересует вопрос безопасности, пока не очень хорошо практикую Angular, и возможно вопрос нубоватый.
Безопасно ли в теле JSON, гонять такие поля как IsAdmin, списки Permissions для конкретного юзера. Возможно ли как-то подделать/подобраться к клиентскому коду так что была бы возможность заставить ангуляр показать например Админ меню, или еще что-нибудь запрещенное для конкретного юзера. Понятно что на бекенде я не дам выполнить то что не разрешенно. Интересен только хак клиента на Angular
  • Вопрос задан
  • 3580 просмотров
Решения вопроса 2
Да, можно, множеством способов.
Вы всегда должны исходить из недоверенного фронт-end-а. Фактически проверки, реализуемые на фронте - это некое дополнение, обеспечивающее удобство пользователю (узнать о недопустимом вводе прямо сейчас), но не безопасность.
Ответ написан
@theaidem Автор вопроса
Спасибо комментатору выше, вот пара абзацев из статей задевающих эту тему (может кому интересно будет):

Enforcing the routing policy client-side

Warning: I want to stress the importance of securing your server-side API once-again. The routing policy we're "enforcing" client-side is very easy to get around using Chrome Developer Tools or Firebug. The technique I'm describing is used as a way of tailoring your views and giving a better user experience, but malicious users can still change their user role and get access to client-side routes that should be restricted to them. This is not a problem as long as any sensitive data is accessed via your server-side API, and the proper authentication/authorization strategy is implemented there.

Статья

Access control

Authorization a.k.a. access control in AngularJS doesn’t really exist. Since we’re talking about a client-side application, all of the source code is in the client’s hands. There’s nothing preventing the user from tampering with that code to gain ‘access’ to certain views and interface elements. All we can really do is visibility control. If you need real authorization you’ll have to do it server-side, but that’s beyond the scope of this article.

Статья
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы