【问题标题】:authenticate a user and generate / store session id验证用户并生成/存储会话 ID
【发布时间】:2020-07-08 13:34:07
【问题描述】:

我正在使用 Python 微服务 (falcon) 和 postgres 数据库在 VueJS 中构建一个小型用户平台。我需要一些帮助来理解生成会话 id 的正确流程,以及是否有任何关于如何改进这种方法的建议以及我应该考虑的其他方法。

目前,这些是用于身份验证的步骤。

1)user sends username/password
2)if user exists in db, then I am generating a session_id (example: c8c83009-55b6-442a-b934-c6629aa20ac6)
the api layer stores this session_id in redis, and I would plan to pull in some relevant session data like email address, name, address, billing account id for stripe, etc.
3)I return the session_id as a cookie (set-cookie). Then on future requests for each page, the browser is passing the api the cookie (with session_id) with this session id.

这是正确的方法吗? session_id 应该是如上所示的“纯文本”格式,还是我需要 md5 或对其应用某种类型的散列?对于像 redis 这样的缓存存储,我应该将 session_id 保存为键,还是最好使用电子邮件地址,但将 session_id 保留为值之一。这是发出 session_id 的典型方法,还是应该有一些额外的东西与 session_id 一起,以防有人获得 session_id?

只是想看看人们如何处理身份验证和授权会话,如果您有任何您认为有用的好资源,请分享!

【问题讨论】:

    标签: python python-3.x authentication session


    【解决方案1】:

    如果您的站点使用http://,则传输是不安全的,无论您是否散列您的 sesssionsID - 您都在以明文形式传输它。任何捕获可以使用该令牌发出请求的人 - 所以第一步是使用https:// 来保护您的传输......直到您这样做,这并不重要。

    如果您使用htpps:// 使用过时的 MD5 进行哈希处理,会话令牌不会给您“更多”的安全性,因为同样适用。如果有人足够聪明,可以在您的https:// 中进行中间人/XHR,他可以获得令牌或哈希令牌,您会遇到与上述相同的问题。

    另一方面,传输加盐和散列的密码(不是 md5,尝试 SHA-256)应该“确保”如果有人得到它,它是不可逆转的 /em> 再次变成明文。如果加盐不随客户端/时间/随机 cookie 值而改变,则可以重播请求以获得访问权限 - 但如果您以某种方式获得“足够”但“短暂”(handwavium@work)加盐和散列可能/会/应该提高安全性.


    资源:

    【讨论】:

      猜你喜欢
      • 2013-02-16
      • 2021-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 2016-04-19
      相关资源
      最近更新 更多