【问题标题】:Is there any reason or advantage of using both session cookies and redis store for sessions将会话 cookie 和 redis 存储用于会话是否有任何理由或优势
【发布时间】:2020-07-07 15:04:28
【问题描述】:

上下文

在烧瓶应用中,我们使用签名的 cookie(编码的 JWT)存储用户数据,但是数据量太大而无法放入 cookie(每个项目的特定权限)。

Redis 来了,我们不再把权限存储在 JWT 中来回传递,而是将其保存在 redis 中。

我的问题是

  1. 签署会话 cookie(编码 JWT)并使用 redis 存储其他会话信息有什么好处
  2. 最好自己实现会话逻辑而不是使用flask-session 之类的东西

【问题讨论】:

    标签: session flask redis


    【解决方案1】:

    即使您使用Redis 来存储会话,您仍然需要 cookie,因为您需要通过密钥进行查询,并且密钥将是 cookie 中的客户端之一。

    您可以只将标识符保留在 cookie 中,但将其余部分存储在 redis 中,然后通过该标识符获取详细信息。

    1. 我认为将一些长的、难以知道的标识符作为密钥而不只是一些整数或一些任意的短文本是安全的。
    2. 我对@9​​87654322@ 不是很熟悉,但是多年来session 的要求几乎相同(获取、设置、过期、删除),并且可能该库支持会话相关用例的所有要求。我会选择现有的而不是实施新的。

    【讨论】:

    • 是的,我最终得出了相同的结论,“我认为将一些长的、难以知道的标识符作为密钥而不是仅仅一些整数是安全的”我正在考虑使用user_id,你会建议什么来代替这个?编码的 id ?
    • 是的,一些长而任意的数字(用用户ID等加盐),否则有人可能会编辑他的cookie并请求获取其他人的号码。 @steff_bdh
    • 我使用应用程序签名来防止来自用户端的修改,所以除了mods还有什么其他的理由来掩盖?
    • @steff_bdh 我认为没有,唯一的原因是安全原因,但如果你覆盖了那个区域,我认为没有任何理由。
    • @steff_bdh 你如何使用application signatures 来防止修改?介意分享你的解决方案吗?谢谢
    【解决方案2】:

    JWT 最适用于令牌由不同应用程序生成和使用的分布式应用程序。因此,如果所有处理都发生在单个后端,redis 会更加灵活。 实现自己的会话逻辑可能不是一个好主意,尤其是当会话用于安全目的(身份验证)时。

    【讨论】:

    • 为自定义安全创建自己的会话逻辑并没有什么坏处...每个人都使用的默认安全性,因为它很方便,但安全性不是很好...当然你必须知道你在做什么
    猜你喜欢
    • 2018-10-06
    • 2012-12-30
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多