2017-02-07 11 views
1

Насколько я понимаю, JWT может содержать некоторую информацию о роли пользователя, которая должна быть проверена на сервере, например. в scope, так что пользователь, не имеющий роли, не сможет получить доступ к данным из определенных конечных точек, защищенных этой ролью.Право на основе JWT на стороне клиента

{ 
    "iss": "http://issuer.com", 
    "exp": 1300819380, 
    "scopes": ["customer", "supplier", "seller"], 
    "sub": "[email protected]" 
} 

Таким образом, данные безопасны. Но скажем, у меня есть панель инструментов, функции которой я хотел бы запретить пользователю просматривать.

Учитывая, что JWT может быть изменен на стороне клиента, как вы собираетесь обеспечить такие страницы в SPA?

ответ

1

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

Предполагая, что функции панели управления на самом деле являются возможностями, предоставляемыми API (например, просмотр данных, полученных через запрос GET, или управление данными через запрос POST, PUT, DELETE), вы можете защитить эти конечные точки API. Поэтому, даже если злоумышленник нарушил код на стороне клиента, они не получат или не изменят защищенные данные.

Но к вашему конкретному вопросу о том, как защитить страницы в SPA, нет такого пути. Даже если код запутался, все же все еще существует для того, чтобы сложный пользователь мог разбирать и изменять произвольно.

+0

Спасибо за проги. Фактически функции панели инструментов, о которой я упоминал, загружаются в одностраничное приложение и не зависят от данных API. Я также хотел бы защитить эти функции. Я понимаю, что сложный атакующий может обойти любые меры на стороне клиента, которые я принимаю, однако я ищу установку, которая защищает от других 99%. – softcode