2016-03-31 21 views
0

Я использую Node.js, MySQL и JSON Web Tokens для создания api.JSON Web Token (JWT) Безопасность

Мой JWT выглядит следующим образом:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJsb2dnZWRfaW4iLCJhZG1pbiJdLCJpZCI6NzEsImlhdCI6MTQ1OTQ0NjU5MCwiZXhwIjoxNDU5NTMyOTkwfQ.BBbdyFMztYkXlhcBjW6D5SsKxtaRiZJqiNShOroQmhk 

и его требования декодирования для:

{"roles":["logged_in","admin"],"id":71,"iat":1459446590,"exp":1459532990} 

Когда апи точка получает, что JWT, это безопаснее для вызова таблицы пользователя с идентификатором 71 получить какие-либо соответствующие данные или использовать идентификатор из JWT?

В идеале мы бы сэкономили много вызовов в таблице User, но есть ли угроза безопасности? Не удалось ли злонамерному пользователю изменить этот идентификатор или роль до вызова конечной точки?

ответ

3

JWT подписан. Если пользователь меняет что-либо на полезной нагрузке, проверка подписи будет терпеть неудачу, и вы узнаете, что данные были подделаны.

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

Подробнее о проверке JWT и жизненном цикле:

https://github.com/auth0/node-jsonwebtoken#jwtverifytoken-secretorpublickey-options-callback

+0

Совершенных. Спасибо! – user1683056

Смежные вопросы