看完这篇: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/