首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在电子应用中安全、正确地存储JWT令牌

如何在电子应用中安全、正确地存储JWT令牌
EN

Stack Overflow用户
提问于 2019-05-23 14:50:45
回答 1查看 3.8K关注 0票数 1

我正在构建一个电子桌面应用程序,在这个应用程序中,它将使用JWT令牌调用远程API。但是,在没有XSS、CSRF、man中间攻击等威胁的情况下,我应该把这个JWT令牌安全地保存在哪里呢?其他应用程序无法访问

我尝试使用node-keytar包,它使用从用户登录中派生的加密密钥。

但是根据这个问题(https://github.com/atom/node-keytar/issues/88),如果用户的环境安装了恶意软件,证书(在我们的场景中是JWT)仍然会受到危害。

节点-keytar的代码非常简单,下面是添加秘密

代码语言:javascript
复制
keytar.addPassword('KeytarTest', 'AccountName', 'secret');

这里有个秘密

代码语言:javascript
复制
const secret = keytar.getPassword('KeytarTest', 'AccountName');
console.log(secret); // "supersecret"

我正在考虑将JWT存储到内存中可能是最安全的方法,但每次重新打开电子桌面应用程序时,用户都需要重新登录并获得JWT令牌。欢迎任何建议或想法。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-05-23 14:57:11

在许多涉及JWT的用例中,在将JWT发送到API之前,不一定需要对JWT进行任何额外的加密/混淆,因为:

  • 当您将JWT发送到API时,您将通过SSL或HTTPS对整个有效负载进行加密。从理论上讲,这将消除大多数中人攻击的可能性。
  • 即使有人设法嗅到了您的JWT令牌,他们也会缺少服务器的密钥,而该密钥是解锁所需的。而且,即使他们设法解锁JWT,也几乎不可能在不改变包含在JWT本身中的校验和的情况下修改其内容。这通过在JWT中插入一些东西来消除注入攻击的可能性。

因此,一般来说,JWT模式是将服务器端会话状态推送到应用程序之外的一种方式。它这样做是为了保护这种状态不受外界的干扰。如果可以轻松地在外部篡改一个JWT,那么整个模式就会崩溃。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56277856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档