0

这种生成和检查散列的方法是否允许创建仅持续一天的安全用户特定散列?

generate_token: sha(salt + day_of_year + user)

check_token: sha(salt + day_of_year + user) == get['token']

这里的想法是创建一个只能持续一天的即时登录令牌。它可以通过电子邮件发送给个人用户。

4

1 回答 1

3

更好的方法是计算到期时间戳(例如,当前时间 + 86400 秒),然后将该时间戳存储在数据库中,同时将其包含在哈希中:

user | expiry | hash
-----+--------+--------------------------
...  | 123456 | sha(salt + 123456 + user)

然后在检查时,您会看到 (a) 哈希是否存在,并且 (b) 它与用户匹配,以及 (c) 到期时间戳是否尚未过去。

这为您提供了从发布之日起始终持续一天的哈希,而不仅仅是持续到第二天开始的时候。

如果您愿意,它还可以让您轻松地从数据库中删除过期的哈希,以减少行数。

于 2013-01-08T07:52:08.990 回答