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