在静态网页上保留 JWT 令牌
Persist JWT tokens on static web pages
目前 运行 一个带有 aws lambda 和 api 的网站 gateway.The 网站 运行 node.js 在 s3 存储桶中。
我设法为用户生成了一个 JWT 令牌,但是我不想将其存储在 cookie 等中。
我目前的设置是,如果用户想使用发电机,他会进入一个 table 并检索令牌,然后使用该令牌从另一个 table 获取数据。
问题是我每次都必须发出两个请求,一个用于验证令牌或获取令牌,另一个用于执行请求
JWT 的安全性来自这样一个事实,即它是使用客户端没有的密钥在您的服务器上生成和签名的。例如,您可以设置到期日期、将用户的用户名或 IP 地址添加到声明中,或者您想要添加的任何内容。
您在令牌中嵌入的任何声明不能在不使 JWT 签名无效的情况下进行更改。 这是一个关键概念。
唯一的安全风险是将 JWT 放入 cookie(或 header,或本地存储,或 session 存储,或将其作为 JSON 嵌入例如网页)是您的授权用户以外的其他人 other 可以获得并使用它。他们有多种方法可以做到这一点——中间人攻击、XSS 等
如果令牌有到期日期,并且与用户的 IP 地址相关联,则只有在允许的持续时间内来自该 IP 的请求才有效。如果您正在检查 JWT 是否设置了到期日期,则 cookie 的持久性无关紧要。
但同样,用户必须有令牌才能发送,因此您必须将其存储在他们身边的某个地方,cookie 是一个很好的地方。
希望对您有所帮助。
目前 运行 一个带有 aws lambda 和 api 的网站 gateway.The 网站 运行 node.js 在 s3 存储桶中。
我设法为用户生成了一个 JWT 令牌,但是我不想将其存储在 cookie 等中。
我目前的设置是,如果用户想使用发电机,他会进入一个 table 并检索令牌,然后使用该令牌从另一个 table 获取数据。
问题是我每次都必须发出两个请求,一个用于验证令牌或获取令牌,另一个用于执行请求
JWT 的安全性来自这样一个事实,即它是使用客户端没有的密钥在您的服务器上生成和签名的。例如,您可以设置到期日期、将用户的用户名或 IP 地址添加到声明中,或者您想要添加的任何内容。
您在令牌中嵌入的任何声明不能在不使 JWT 签名无效的情况下进行更改。 这是一个关键概念。
唯一的安全风险是将 JWT 放入 cookie(或 header,或本地存储,或 session 存储,或将其作为 JSON 嵌入例如网页)是您的授权用户以外的其他人 other 可以获得并使用它。他们有多种方法可以做到这一点——中间人攻击、XSS 等
如果令牌有到期日期,并且与用户的 IP 地址相关联,则只有在允许的持续时间内来自该 IP 的请求才有效。如果您正在检查 JWT 是否设置了到期日期,则 cookie 的持久性无关紧要。
但同样,用户必须有令牌才能发送,因此您必须将其存储在他们身边的某个地方,cookie 是一个很好的地方。
希望对您有所帮助。