因为如果令牌被泄露,你也没有什么办法。除非令牌过期,否则用户可以访问一切。我在想一种可能提供额外安全层的方法,但不确定?
如果我们在有效载荷中添加一个IP地址,并在服务器上从请求头中进行比较,会怎么样?
假设我的payload对象看起来像
{
user_id: 'xyz',
email: '[email protected]',
user_ip: '89.102.22.95'
}
在服务器上,我们将比较有效载荷中保存的IP和发出请求的IP。
if (user_ip == req.connection.remoteAddress) {
/* It's a valid request */
} else {
/* Verify Identify using an email confirmation */
}
这基本上说的是,即使令牌已经泄露,我们也会有额外的安全层,它将匹配令牌生成的IP和发出请求的IP。
这是不是一个很好的解决方案,让它更安全一些?
我认为这不是一个好的解决方案,因为用户可能会在wifi移动网络之间改变,这也改变了他们的IP地址。
我能想到的更好的方法是将用户使用的所有IP地址存储在一个单独的表上。对于每一个请求,我们都会检查用户的 "白名单 "中是否有这个IP地址(貌似Steam和Parsec都是用这个方法)。