我们知道是否修改了JWT内容,服务器仅使用签名即可找到它。但是,如果JWT被黑客盗用并未经修改就使用了怎么办?服务器如何验证JWT来自正确的客户端?
我知道用户ID在JWT内部,但是我仍然不确定服务器如何安全地确保JWT来自与JWT具有相同用户ID的客户端。
答案 0 :(得分:3)
黑客不能也不会修改令牌。因为令牌本身是安全的,并且被完全信任。这就是JWT的本质。因此,没有其他信息,您将无法分辨出差异。
但是,您可以设计一种策略来保护您的资源。
最重要的是防止黑客“窃取”令牌。当您始终通过安全线路发送令牌并将信息(如令牌)存储在安全的地方时,它会有所帮助。
使其不值得破解令牌。使用短暂的令牌,例如五分钟或更短的时间。黑客持有令牌后,只会在短时间内提供访问权限。这就是“可接受的损失”。另一方面,不鼓励黑客,因为这样做不值得结果。
检测可疑行为。例如每秒100次匹配或具有相同令牌的不同IP地址。
使用刷新令牌时,请检查请求方。 IP地址是否在范围内?仅使用一次性刷新令牌。仅当客户端可以保密时才允许刷新令牌。在刷新令牌上使用到期时间,这将迫使用户不时登录。
并将其他信息添加到令牌中的声明中。像ip地址,二手代理等。这些都是快速检查。
如果IP地址与声明中的IP地址不同,请不要接受令牌。该应用将需要发送刷新令牌以获得新的访问令牌。没有刷新令牌,黑客就无法做到这一点。
跟踪成功的登录IP地址。对于已知的ip地址,可以刷新令牌。对于未知的IP地址(可能的黑客或未知的已更改wifi网络),请使刷新令牌无效。这样,用户被迫再次登录。
作为其他安全措施,在出现其他问题时,请与用户联系(发送电子邮件,就像Google一样)。在这种情况下,用户可以撤消刷新令牌。