代码之家  ›  专栏  ›  技术社区  ›  Asaf R

如何生成会话标识符?

  •  1
  • Asaf R  · 技术社区  · 15 年前

    大多数web应用程序依赖于与用户的某种会话(例如,保持登录状态)。会话id作为cookie保存在用户的浏览器中,并随每个请求一起发送。

    会话-这些会话ID需要稀疏且有点随机。这也必须是独一无二的。

    This 这个问题对于唯一的随机数有一个很好的答案,但是对于大范围的数字来说它似乎不可伸缩,因为数组最终会占用大量内存。

    编辑:

    • 就安全性(和随机性)而言,guid被认为是不安全的。
    • 核心问题是确保这些数字是唯一的,也就是说,它们不会重复,从而提高效率。
    2 回复  |  直到 8 年前
        1
  •  2
  •   Community CDub    8 年前

    如果你想让它们独一无二而且不容易猜到,为什么不把它们结合起来呢?

    获取一个计数器(为新会话生成唯一值)并附加由 CSPRNG minimum number of bits 必须的权利。

    在服务器场上也应该可以这样做,而不需要挂接:只需在服务器本地的计数器前面加上该服务器唯一的id。

    SSSSCCCCCRRRRRR
    

    S 是创建会话的服务器id, C 是服务器本地计数器和 R 是一个加密随机数。

    (免责声明:字母的数量与您应该以任何方式使用的数字/位的数量不一致。:)

        2
  •  0
  •   Josh Barker    15 年前

    如果您使用的是.NET,您可以查看RNGCryptoServiceProvider。

    http://www.informit.com/guides/content.aspx?g=dotnet&seqNum=775

    这是一种生成随机数的加密安全方法。

    推荐文章