Ama*_*edi 1 javascript json node.js jwt
我是第一次使用 JSON Web 令牌 (JWT)。我正在使用 Hydra-Express 框架制作 Node.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);
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将此 JSON 令牌保存到我的浏览器标头中,以便它不会丢失并与标头一起再次发送到后端。如何将其保存在浏览器存储中,并在每次向后端发送请求时将其添加到请求标头中?
安全建议:
尽量保持简短:cookie(仅限 http 和安全标志)容易受到 CSRF 的攻击,但不会受到 XSS 的攻击。localstorage 中的 JWT 容易受到 XSS 攻击,但不会受到 CSRF 攻击
您能做的最好的事情就是最大限度地降低风险:将 JWT 存储在 cookie 中 将 csrf_token 存储在 localstorage 中
要使其无状态:将 csrf_token 包含在 JWT 有效负载中,并检查服务器端的 JWT csrf_token 和从本地存储读取并在标头中提供的 csrf_token 是否匹配。
这需要攻击者通过XSS获取csrf_token(例如,您在站点中使用受损的第3方js库或不进行卫生处理),然后他需要使用csrf_token触发csrf请求(例如嵌入的img src标签或表单)网页/电子邮件)
这种组合使攻击者变得更加困难(但并非不可能)。
它提供与使用 csrf_tokens 的基于普通会话的身份验证相同的安全级别,但不需要状态。
| 归档时间: |
|
| 查看次数: |
4077 次 |
| 最近记录: |