我正在构建一个电子桌面应用程序,在该应用程序中它将使用JWT令牌调用远程API。但是,在没有XSS,CSRF,中间人攻击等威胁的情况下,我应该在何处安全地保留此JWT令牌,并且其他应用程序无法访问
我尝试使用node-keytar
程序包,该程序包使用从用户登录名中派生的加密密钥。
但是根据这个问题(https://github.com/atom/node-keytar/issues/88),如果用户的环境安装了恶意软件,则凭据(在我们的场景中为JWT)仍然会受到威胁。
node-keytar的代码非常简单,这是添加的秘密
keytar.addPassword('KeytarTest', 'AccountName', 'secret');
这是获取秘密
const secret = keytar.getPassword('KeytarTest', 'AccountName');
console.log(secret); // "supersecret"
我正在考虑仅将JWT存储到内存中是最安全的方法,但是它将要求用户在每次重新打开电子桌面应用程序时重新登录并获取JWT令牌。 任何建议或想法都受到欢迎。谢谢!
答案 0 :(得分:0)
在许多涉及JWT的用例中,您不必在将JWT发送到API之前对JWT进行任何其他的加密/模糊处理,因为:
因此,一般而言,JWT模式是将服务器端会话状态推送到应用程序外部的一种方式。并以保护此状态免受外部篡改的方式进行操作。如果可以轻松地在外部篡改JWT,则整个模式将崩溃。