创建随机生成的安全令牌并存储在数据库中

时间:2011-07-21 03:52:21

标签: php security hash salt

我正在尝试为我网站上的每个用户生成一个唯一令牌。令牌在用户注册时生成,理想情况下尽可能安全。允许我向用户显示令牌的最佳方法是什么?

此令牌不是密码,用户不会自己创建。如果我在注册时散列并加盐,我将无法明显地检索它,因为它是哈希和盐渍的。我希望通过PHP能够以简单的方式实现这一点,并且能够轻松地将其显示给用户。

4 个答案:

答案 0 :(得分:1)

怎么样:

md5(uniqid('', true))

答案 1 :(得分:0)

哈希是单向的,因此反转哈希的唯一方法是存储原始值,使哈希冗余。

如果您只需要显示一次值,则将值存储到变量中,在页面上打印,不保存,这对您来说是安全的。

另一种选择是仅使用数据库加密来存储令牌,然后在显示给用户之前解密。假设你使用MySQL,你可能会发现这个帮助:MySQL Encryption

答案 2 :(得分:0)

不要降低zerkms的评论。但我会推荐crypt()。

非散列值对用户有什么作用?

答案 3 :(得分:0)

用户将如何使用此令牌?

真正的问题是你的安全意味着什么。我假设你的意思是“不可思议”,这意味着它必须很长和/或很复杂。

但是,如果用户需要记住它,则会出现问题。

所以真正的问题是你想要猜测它有多难,你想要它被召回的容易程度如何?