讨论:Passport-local JWT Token in Local Storage的关注点
Discussion: the concern of Passport-local JWT Token in Local Storage
我在 Node.js 上使用 Passport-local(在 Mongodb 中保存用户信息)和 Angular.js 作为客户端。这个过程很简单。
然而,这里有 3 个安全问题:
当我在客户端上登录时,一个 json 文件包含用户和真实
密码被发送到服务器。
登录后,token会保存在浏览器的本地
存储,可以看到,复制和将来使用。
salt处理后的jwt token与用户名一起保存在MongodbUsers Collection中,可以看到并移动到另一个
服务器(以便我们可以使用相同的用户名和密码
另一台服务器登录并获取新令牌)
有人愿意进一步讨论这些吗?关于如何解决这些问题并降低网站风险的任何想法?使用 https 怎么样?
如果您只想在其他服务器实例上也验证您的令牌,则无需将令牌存储在您的用户架构中。因为,jwt.verify()
为您提供了检查令牌是否有效的功能。如果令牌有效,那么您将在 return 中获得您在创建令牌时使用的用户信息。如果您在数据库中找到该用户,那么您的令牌对于有效用户是可以的,否则不是。
创建token最主要的是,根据你的服务器需求设置expiresIn
,这样即使你的API安全受到威胁,也不会长期可用
我在 Node.js 上使用 Passport-local(在 Mongodb 中保存用户信息)和 Angular.js 作为客户端。这个过程很简单。 然而,这里有 3 个安全问题:
当我在客户端上登录时,一个 json 文件包含用户和真实 密码被发送到服务器。
登录后,token会保存在浏览器的本地 存储,可以看到,复制和将来使用。
salt处理后的jwt token与用户名一起保存在MongodbUsers Collection中,可以看到并移动到另一个 服务器(以便我们可以使用相同的用户名和密码 另一台服务器登录并获取新令牌)
有人愿意进一步讨论这些吗?关于如何解决这些问题并降低网站风险的任何想法?使用 https 怎么样?
如果您只想在其他服务器实例上也验证您的令牌,则无需将令牌存储在您的用户架构中。因为,jwt.verify()
为您提供了检查令牌是否有效的功能。如果令牌有效,那么您将在 return 中获得您在创建令牌时使用的用户信息。如果您在数据库中找到该用户,那么您的令牌对于有效用户是可以的,否则不是。
创建token最主要的是,根据你的服务器需求设置expiresIn
,这样即使你的API安全受到威胁,也不会长期可用