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

时间:2009-03-12 03:27:36

标签: authentication

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

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

3 个答案:

答案 0 :(得分:7)

只需使用GUID即可。许多数据库支持它们作为本机类型;它们很容易在大多数流行的语言/框架中操纵;从一个平台完美转换到另一个平台;和every one is unique

答案 1 :(得分:1)

我认为这更多地取决于价值随机化的方式而不是多长时间。如果256位哈希只是一个很容易被猜到或缩小的东西的哈希值,例如基于时间的唯一ID,那么它就完全不安全。

然而,正如你所说,你并没有具体询问如何让它足够随机。

估计2 ^ 80(或更多)所需的操作是为了打破某些东西通常是一个很好的衡量标准。这意味着80位散列是安全的。 (如果你很容易受到生日攻击,你需要加倍,即160位,但我不认为这种情况适用)。

就个人而言,为此我使用256位哈希。当base64编码时,它们压缩到只有43个字符的长度,所有可打印的字符。我认为即使它比我需要的更多,但是让它们长的不是很麻烦。

答案 2 :(得分:0)

您可以随时查看其他人所做的事情,例如Oauth2表示令牌介于128和160位之间,并执行相同操作。我喜欢this post,它说122位应该足够了#34;对于大多数用途,包括核导弹的发射代码。"如果您相信实际的启动代码may have been 00000000 for 20 years,这很有趣。我们的160位令牌的安全性非常重要。