以下Flask RESTful Destroy User Token讨论了如何销毁烧瓶令牌,但这并不能阻止中间人攻击。无论如何,令牌无效使其在到期之前不再有效?
答案 0 :(得分:4)
您引用的问题中显示的令牌是通过向某些数据添加加密签名来创建的。通常,存储在令牌中的数据包括令牌所有者(例如用户ID),并且还可以包括到期日期。
这些令牌的好处是所有有用的数据都存储在令牌中,因此您无需在数据库中存储任何内容。您只需将令牌传递给客户端,当客户端将其发回时,您需要对其进行解码并使用其中的信息来了解客户端。
这种方法的缺点是没有简单的方法来撤销令牌,因为令牌不会存储在任何地方。要扩展此机制以允许撤消,可以添加存储已撤消令牌的数据库表。然后在令牌验证期间,您不仅要解码令牌,还要确保令牌不在撤销列表中。
另一种完全不同的方法是不使用签名令牌。只需将令牌设为随机UUID,并将其存储在每个用户的用户表中。如果您对其进行索引,那么当客户端发送令牌时,您可以使用数据库搜索找到该用户。然后通过清除用户的令牌字段来完成撤销令牌。
我希望这有帮助!