使用Node.js - Express后端在JWT中存储秘密信息

时间:2017-05-15 11:58:06

标签: node.js security jwt

我正在开发一个Angular Web应用程序,它通过RESTful API与其后端进行通信。目前我正在使用JWT来存储状态(当前用户ID等)。我使用jsonwebtoken和passport-jwt包来实现我的Node.js-Express应用程序的JWT。

有时我可能需要在状态中存储与会话相关的一些信息(例如,秘密加密密钥),但用户不应该知道这些信息。

由于JWT有效负载已签名但未加密,因此任何关心解码JWT有效内容的人都可以清楚地看到其内容,因此将秘密内容直接存储在有效负载中是不合适的。虽然我可以实现某种自制加密,无论是整个JWT字符串还是有效载荷中的秘密变量值,我都在寻找"对"或"传统"处理这个的方法。

1 个答案:

答案 0 :(得分:0)

最好的方法是将它仅存储在后端的某种持久存储中,最好是散列。

如果不可能,那么您可以存储在JWT中,但是在将数据放入其中之前需要加密数据。

Bcrypt可能是最安全的解决方案https://www.npmjs.com/package/bcryptjs。请注意,您希望它越安全,加密速度就越慢。