0

我想使用 JWT 创建一个登录系统并有以下问题:

1-我的客户登录,我为他/她生成一个令牌并将令牌存储在本地存储中。现在如果其他人从这个人浏览器的本地存储复制这个令牌并粘贴到他/她(我的意思是黑客)浏览器本地存储中,这个黑客将能够登录吗?如果是,那安全吗?

2-我将用户 ID 放入我在登录功能生成的令牌中。在发送到后端的每个请求上,我都会解码令牌并在其中找到 userId。现在我应该用什么来比较这个用户ID吗?示例检查后端是否有此用户 ID 的任何会话,甚至通过 DB 检查用户 ID?

3-我应该在本地商店中设置 JWT 令牌的到期时间吗?

4

1 回答 1

0

1 - 将这些存储在 localStorage 中是安全的。值得一试的是如何防范跨站脚本攻击;对于高安全性环境尤其如此。用户复制和粘贴可能是一种不太可能的攻击,并且,如果用户可以物理访问进行复制和粘贴,则可能存在其他“漏洞”,例如仅使用浏览器存储的密码。

2 - JWT 加密声明中包含的用户 ID。用户无法更改此声明并使其保持有效(假设是强密钥),因此无需在其他地方进行检查。

3 - 是的!由于 JWT 中有一个声明(如用户角色),因此您不希望这些声明永远有效。此外,您希望有一种方法来确保用户重新验证他们的身份(即再次登录),以防万一出现问题/令牌被盗。当您在令牌上设置过期时间时,您会强制执行此操作。

于 2018-10-15T23:54:23.903 回答