gpt4 book ai didi

python - 如何克服 SSO : encryption and expired tokens 的 itsdangerous 限制

转载 作者:行者123 更新时间:2023-11-28 16:34:50 24 4
gpt4 key购买 nike

我已经使用 Python 和 Flask 构建了几个相关的应用程序。一个是身份验证应用程序,用户可以在其中登录并接收 token 。其他是业务应用程序,它们基于 token 对用户进行身份验证和授权。当然需要对 token 进行签名以防止篡改。因为我使用的是 Python,所以 itsdangerous 模块是一个自然的选择。但它并没有提供一些看似重要的功能。编写自己的安全代码很少是一个好主意,但我觉得不得不在它的危险之上添加我自己的代码以解决一些限制。我想知道:

一个。下面的担忧是否成立?b.如果是这样,谁能为解决这些问题的 Python/Flask 推荐一个好的开源安全解决方案?

我最关心的两个限制是:

  1. 缺乏加密。 Itsdangerous 可以签署 token 但不能加密它。 token 可能包含用户不应看到的信息,例如他或她已被授予的角色列表。

  2. 泄露有关过期 token 是否有效的信息。持有 token 的恶意用户可以使用 itsdangerous 来区分从未有效的 token 和曾经有效但已过期的 token 。如果这样的用户只能说出 token 无效,而不说明原因,那就更好了。

最佳答案

  1. Lack of encryption. Itsdangerous can sign the token but can't encrypt it. The token might contain information the user shouldn't see, such as a list of which roles he or she has been granted.

我不认为让用户看到他被授予了哪些角色有什么坏处。但是,如果您不希望它在 token 中可见,您可以简单地将 token 视为标识符,并在 token 和用户之间建立关系,从而建立用户角色。

如果 token 确实包含私有(private)数据,那么您应该先对其进行加密(例如,使用 PyCrypto ),然后对其进行签名(例如,使用 itsdangeroushmac )。

参见 Should we MAC-then-encrypt or encrypt-then-MAC?有关签名和加密数据顺序的信息。

  1. Leaking information about whether an expired token was ever valid. A malicious user who got hold of a token could use itsdangerous to differentiate between tokens that were never valid, and tokens that used to be valid but have expired. It would be better if such a user could tell only that the token is invalid, with no indication as to why.

如果您加密 token ,或者如果 token 只是一个标识符,那么恶意用户应该只能判断 token 当前是否有效(即,它现在有效),而不知道是否有任何其他 token 有效不直接使用有效。但为什么提前知道 token 是否有效会影响安全性?

关于python - 如何克服 SSO : encryption and expired tokens 的 itsdangerous 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27641044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com