"记住我"的标记应该多长时间?

Dar*_*ein 5 authentication

我正在尝试使用带有用户用户名和令牌的cookie向网站添加"记住我"功能,该令牌也以加密方式存储在数据库中.我的问题是这个令牌需要多长时间?我读过的一个网站说128bit,我认为这是16个字符.我不太担心重复,因为即使是256个字符的字符集中的16个字符也提供了大量的可能性,同时重复的可能性很小.

令牌需要多长时间?(我不知道如何生成价值或多么独特.)

Rex*_*x M 7

只需使用GUID.许多数据库支持它们作为本机类型; 它们很容易在大多数流行的语言/框架中操纵; 从一个平台完美转换到另一个平台; 和每一个都是独一无二的.


tho*_*ter 1

我认为这更多地取决于值的随机化方式而不是它的长度。如果 256 位哈希值只是一些容易被猜测或缩小范围的哈希值(例如基于时间的唯一 ID),那么它根本不安全。

然而,正如您所说,您并没有具体询问如何使其足够随机。

估计需要 2^80(或更多)次操作才能破坏某些内容通常是一个不错的衡量标准。这意味着 80 位哈希是安全的。(如果您容易受到生日攻击,则需要两倍,即 160 位,但我认为这种情况不适用)。

就我个人而言,为此目的我使用 256 位哈希值。当使用 Base64 编码时,它们的长度会压缩到只有 43 个字符,而且都是可打印的字符。我认为,尽管这远远超出了我的需要,但拥有它们那么久也不是什么大麻烦。