当前位置: 首页 > 知识库问答 >
问题:

如何在浏览器中存储JWT?

邓禄
2023-03-14

我第一次使用JSON Web令牌(JWT)。我正在制作一个节点。js应用程序。我想使用JWT进行身份验证。根据文档,我将JSON令牌返回到前端。

var tokenData = {
    username: req.body.username,
};

var result = {
    username: req.body.username,
    token: jwt.sign(tokenData, 'secret', { expiresIn: 60 * 60 })
};

res.json(result);

但是我不知道如何将这个JSON令牌保存到我的浏览器头中,这样它就不会丢失,并随头一起再次发送到后端。如何将它保存在我的浏览器存储中,并在每次向后端发送请求时将其添加到请求头中?

共有3个答案

阚砚文
2023-03-14

您可以使用HTML5网络存储或cookie来存储您的JWT令牌,并在您想将请求发送到网络api时从中读取。

此链接将帮助您确定最适合您的应用。

希望有帮助!!

空鸿云
2023-03-14

当它返回时,把你的整个令牌存储在sessionStorage中

sessionStorage.token = json.access_token;

要访问有效负载,请将jwt令牌分成header.payload.signature部分,并只获取有效负载

var enc = json.access_token.split(".")[1];

然后解析base64

var payload = JSON.parse(window.atob(enc));

然后,您可以获取并使用已验证的有效载荷数据有效载荷。sub,有效载荷。角色…等

万开畅
2023-03-14

安全建议:

尽量简短:cookie(仅限超文本传输协议)

您能做的最好的事情就是将风险最小化:将JWT存储在cookie存储中,将csrf_token存储在localstorage中

要使其无状态:将csrf_token包含在 JWT 有效负载中,并检查服务器端 JWT 是否csrf_token和 csrf_token 从本地存储读取并在标头匹配中提供。

这需要攻击者通过XSS获得csrf_token(例如,您在您的站点中使用了受损的第三方js库,或者没有应用清理),然后他需要使用csrf_token触发csrf请求(例如,网页/电子邮件中嵌入的img src标签或表单)

这种组合使攻击者更加困难(但并非不可能)。

它提供了与使用csrf_tokens的基于正常会话的身份验证相同的安全级别,但不需要状态。

 类似资料:
  • 问题内容: 我需要停止浏览器存储用户名和密码值,因为我正在处理包含更多安全数据的Web应用程序。客户要求我这样做。 我尝试了HTML表单和密码字段中的属性。但它无法在最新的浏览器(例如Chrome 55,Firefox 38+,IE 11等)中运行。 最好的解决方案是什么? 问题答案: 感谢您给我回复。我点击了以下链接 禁用浏览器的“保存密码”功能 我通过仅在输入中添加&属性来解决此问题,如下所示

  • 我知道基于cookie的身份验证。可以应用SSL和HttpOnly标志来保护基于Cookie的身份验证免受MITM和XSS的攻击。然而,需要采取更多的特别措施,以保护它免受CSRF的影响。他们只是有点复杂。(参考) 最近,我发现JSON Web令牌(JWT)作为一种身份验证解决方案非常热门。我知道JWT的编码、解码和验证。但是,我不明白为什么有些网站/教程告诉如果使用JWT就不需要CSRF保护。我

  • 问题内容: 我试图使用在stackoverflow上发现的不同方法来保存.pdf文件,但是,我总是会损坏它。当我使用记事本打开损坏的文件时,我得到以下信息: 后来,我尝试使用@BalusC提供的答案从浏览器中保存文件。这个解决方案非常有帮助:我能够摆脱这些问题。但是,它也会产生损坏的.pdf。但是当我用记事本打开它时,它是完全不同的。但是,不再有登录问题: 我还有什么其他选择? PS:当我尝试使用

  • 我已经使用ASP.NET标识创建了承载令牌。在AngularJS中,我编写了这个函数来获取授权数据。 所以我想把这个令牌存储到浏览器cookie中。如果该令牌存在于此,则获取该令牌并从IIS服务器获取数据,否则重定向到登录页以登录获取新令牌。 类似地,如果用户单击注销按钮,它应该从浏览器cookie中删除令牌。 这怎么做?有可能吗?对用户进行身份验证和授权是正确的方式吗?如果有多个用户令牌怎么办?

  • 我正在使用谷歌云存储来存储我的谷歌应用程序引擎应用程序的图像,我试图访问这样的图像: 但是,这会显示“拒绝访问”或向我显示Google登录提示。然后我尝试使用签名URL来授予客户端访问权限。 我生成了要签名的URL,如下所示: 然后用p12文件生成Base64并用Java编译,但我得到了以下错误: 我做错了什么?有没有办法不经身份验证就从地面军事系统访问图像?

  • 问题内容: 我有一些登录信息,比如说用户名,登录电子邮件ID和位置。 即使在用户注销并关闭窗口后,我也希望将此信息保留在浏览器中。 这样,当用户在注销或会话期满后返回时,Web应用程序将填写客户端用户名,并要求用户输入密码。 我要求的最好的例子是Google登录。! 目前,我只使用会话,不使用cookie。 有什么可能的解决方案? 问题答案: LocalStorage被认为是在浏览器中永久存储值的