Salt 散列自";电子邮件+;盐“;作为验证电子邮件的令牌

Salt 散列自";电子邮件+;盐“;作为验证电子邮件的令牌,salt,email-validation,sha256,sha,saltedhash,Salt,Email Validation,Sha256,Sha,Saltedhash,我正在验证用户电子邮件地址 大多数人告诉我们的方法是创建一些独特的令牌,并将其存储在db中 发送给用户 我只是用站点范围的salt对(sha256)电子邮件地址进行哈希处理 并将此散列发送给用户 我遗漏了什么,或者这足以验证吗?你可以这样做,如果没有人得到服务器端盐,那就省钱了。最后是电子邮件验证,如果你不需要出于法律原因这样做,那么就没有必要让它变得更复杂 但这取决于你的目标。你想让它更安全吗?您希望易于实现吗?您希望它易于维护吗?您是否在考虑脚本的执行时间 顺便说一句:在电子邮件中有一个很长

我正在验证用户电子邮件地址
大多数人告诉我们的方法是创建一些独特的令牌,并将其存储在db中 发送给用户

我只是用站点范围的salt对(sha256)电子邮件地址进行哈希处理
并将此散列发送给用户


我遗漏了什么,或者这足以验证吗?

你可以这样做,如果没有人得到服务器端盐,那就省钱了。最后是电子邮件验证,如果你不需要出于法律原因这样做,那么就没有必要让它变得更复杂

但这取决于你的目标。你想让它更安全吗?您希望易于实现吗?您希望它易于维护吗?您是否在考虑脚本的执行时间


顺便说一句:在电子邮件中有一个很长的链接时,有一件非常讨厌的事情:可能会有电子邮件管理员破坏了你的链接,所以可能会在链接中添加代码,如果代码没有通过链接完整地传输,可以使用一个表单,用户可以添加代码。

一些事情可能值得一看(或者不值得一看)

如果有人发现了你的salt,那么他们可以重建你的散列并淹没你的系统。在这种情况下,您需要确保用户请求将其电子邮件地址添加到您正在创建的内容中。(也就是说,我不会完全放弃将散列存储在DB中。)


另外,如果salt是相同的,那么如果他们再次从相同的电子邮件地址请求,则散列将是相同的。您是否希望每次请求时都使用不同的哈希值,即使是针对相同的电子邮件地址?您可以先将服务器日期/时间连接到电子邮件地址,然后再对其进行哈希运算,使其每次都不同。

电子邮件或电子邮件地址?(您只是在确认用户的电子邮件地址吗?)电子邮件地址-只需确认有关您使用此服务的上下文的更多信息将非常有用。如前所述,似乎第三方可以截获发送给用户的包含令牌的电子邮件,然后使用带有伪造发件人地址的令牌以电子邮件的形式回复,该电子邮件将验证:,但不是来自实际用户。添加datetime还有一个额外的好处,即您可以使用它在某个设定的时间后使令牌“过期”……比如说24小时。@hatchet:我几乎是在中写的。:)不能通过在数据库中记录请求时间来完成过期吗?你是对的。我想加密/解密,而不是匹配散列值。