Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 销毁一瓶Restful代币 下面讨论了如何销毁烧瓶令牌,但是这并不能阻止中间人攻击。是否要使令牌失效,使其在到期之前不再处于活动状态?_Python_Security_Flask_Man In The Middle - Fatal编程技术网

Python 销毁一瓶Restful代币 下面讨论了如何销毁烧瓶令牌,但是这并不能阻止中间人攻击。是否要使令牌失效,使其在到期之前不再处于活动状态?

Python 销毁一瓶Restful代币 下面讨论了如何销毁烧瓶令牌,但是这并不能阻止中间人攻击。是否要使令牌失效,使其在到期之前不再处于活动状态?,python,security,flask,man-in-the-middle,Python,Security,Flask,Man In The Middle,您所引用的问题中显示的令牌是通过向某些数据添加加密签名创建的。通常,存储在令牌中的数据包括令牌所有者(例如用户id),并且还可以包括到期日期 这些令牌的好处在于,所有有用的数据都存储在令牌中,因此不需要在数据库中存储任何内容。您只需将令牌传递给客户机,当客户机将其发送回时,您就可以对其进行解码,并使用其中的信息来了解客户机是谁 这种方法的缺点是没有简单的方法来撤销令牌,因为令牌不存储在任何地方。要扩展此机制以允许撤销,可以添加存储已撤销令牌的数据库表。然后,在令牌验证期间,您不仅要解码令牌,还要

您所引用的问题中显示的令牌是通过向某些数据添加加密签名创建的。通常,存储在令牌中的数据包括令牌所有者(例如用户id),并且还可以包括到期日期

这些令牌的好处在于,所有有用的数据都存储在令牌中,因此不需要在数据库中存储任何内容。您只需将令牌传递给客户机,当客户机将其发送回时,您就可以对其进行解码,并使用其中的信息来了解客户机是谁

这种方法的缺点是没有简单的方法来撤销令牌,因为令牌不存储在任何地方。要扩展此机制以允许撤销,可以添加存储已撤销令牌的数据库表。然后,在令牌验证期间,您不仅要解码令牌,还要确保令牌不在吊销列表中

另一种完全不同的方法是不使用签名令牌。只需将令牌设置为随机UUID,并将其存储在每个用户的用户表中。如果对其进行索引,那么当客户端发送令牌时,您可以通过数据库搜索找到该用户。然后,撤销令牌只需为用户清除令牌字段即可


我希望这有帮助

如果您没有通过加密连接发送会话令牌,为什么不呢?SSL是减轻MITM攻击的一种方法(预防是可以实现的目标)。我通过SSL发送它们。我正在使用令牌将ios应用程序连接到web后端。我只是不希望出现这样的情况:如果有人发现一个令牌,即使在用户注销后它仍然处于活动状态。谢谢Miguel,这完美地解决了我的问题。使用令牌,然后像这样使其失效,是否是一种安全的方法,可以让用户通过移动设备登录到web api,即将其保存在ios密钥链中?@AdilAnsari:只要设备安全,它就是安全的。据我所知,大多数应用程序都不会撤销代币,这是你在发现违规行为时保留的一项措施。你真的需要找到一个平衡点,你想要安全性,但对于大多数应用程序,你不希望每次用户想要使用你的应用程序时都要求他们提供凭据。对于一个银行应用程序来说,这是有意义的,但对于一些不太重要的东西来说,这可能不是。