node.js - 如何安全地存储和处理 JWT 的 key

标签 node.js security encryption jwt

看完这篇:JWT: What's a good secret key, and how to store it in an Node.js/Express app? ,关于如何存储“ key ”以分配 JWT token 。我有安全问题。我的数据(消息、用户名等)将被加密(在数据库中),只有授权用户才能解密(基于他们的私钥)。由于 JWT token 是使用存储在服务器上的 1 个“ secret key ”生成的,以防攻击者获得“ secret key ”并获得数据库 - token 可以被伪造,因此可以绕过“密码”解密数据,这使得加密毫无意义。为了保护“秘钥”,我可以使用这些方法

Method 1



将“ key ”存储在单独的服务器(如 HSM)上,该服务器将在登录期间接收,然后用于设置 token

Method 2



为每个用户加密某种盐并将其用作“ key ”

我想听听你的想法和想法。 Facebook 或推特是如何做到的?我真的需要 HSM 来存储用于加密的私钥还是有某种替代方法(例如:安全文件系统)?

最佳答案

取决于你的风险偏好。您使用 JWT 的事实表明您的系统不是一个高安全性系统(JWT 不能很容易地在服务器端撤销,因此不适合高度安全的应用程序)。

HSM 是一个不错的选择,尽管您需要将其缓存在内存中以验证每个后续页面请求,除非您使用 RSA 算法。

考虑到外部攻击者无法任意访问存储在您服务器上的文件,文件系统可能“足够安全”。

拥有每个用户的 key 在某种程度上违背了拥有客户端 session 状态机制的目标,因为您必须在数据库中的每个请求上查找此 key 。

另见 Are JWTs a secure option for user authentication?

还有this question .

关于node.js - 如何安全地存储和处理 JWT 的 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37972285/

相关文章:

node.js - Tensorflow.js 上的初学者 : Not understanding shape [, 1]

javascript - 是否可以在 Socket.IO 中执行服务器端回调

c - 混淆的dll的安全性

javascript - 窃取 oAuth2 中的访问 token

Python 日志记录模块加密

html - 离线安全 HTML 5 应用程序

javascript - Node Js 将文件传递给客户端

SQL Server 用户名函数

amazon-web-services - YAML 异常 : Invalid Yaml

javascript - 不确定 javascript 中异步和回调的使用