2016-03-31 12 views
0

私は、Node.js、MySQL、およびJSON Webトークンを使用してAPIを構築しています。JSON Webトークン(JWT)のセキュリティ

私のJWTは、次のようになります。

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJsb2dnZWRfaW4iLCJhZG1pbiJdLCJpZCI6NzEsImlhdCI6MTQ1OTQ0NjU5MCwiZXhwIjoxNDU5NTMyOTkwfQ.BBbdyFMztYkXlhcBjW6D5SsKxtaRiZJqiNShOroQmhk 

、そのクレームがにデコード:APIエンドポイントは、JWTは、それがより安全に、ID 71でUserテーブルを呼び出すようにしていることを受信した場合

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

関連する詳細を取得するか、JWTのIDを使用しますか?

理想的には、多くの呼び出しをUserテーブルに保存しますが、セキュリティ上の脅威はありますか?エンドポイントを呼び出す前に、悪意のあるユーザーがそのIDまたは役割を変更することはできませんでしたか?

答えて

3

JWTが署名されています。ユーザーがペイロード上で何かを変更すると、署名の検証が失敗し、データが改ざんされたことがわかります。

つまり、データ自体は暗号化されていません。ユーザーIDを使用することはできますが、公開できる情報以外に機密情報は追加しないでください。

JWTの検証およびライフサイクルについての詳細:

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

+0

パーフェクト。本当にありがとう! – user1683056

関連する問題