我正在验证用户电子邮件地址。
大多数人告诉的方式是创建一些独特的 token 将其存储在数据库中并
发送给用户。
我只需使用站点范围的盐对电子邮件地址进行哈希处理(sha256)即可实现此目的
并将此哈希值发送给用户。
我是否遗漏了什么或者这足以验证吗?
最佳答案
一些可能值得一看(或不值得一看)的事情。
如果有人发现了你的盐,那么他们就可以重建你的哈希值并淹没你的系统。在这种情况下,您需要确保用户请求将其电子邮件地址添加到您正在创建的任何内容中。 (也就是说,我不会完全摆脱将哈希存储在数据库中。)
此外,如果盐相同,则当他们再次从同一电子邮件地址请求时,哈希值将相同。即使对于相同的电子邮件地址,您是否希望每次发出请求时都使用不同的哈希值?您可以在散列之前将服务器日期/时间连接到电子邮件地址,以使其每次都不同。
关于salt - 来自 "email+salt "的哈希值作为验证电子邮件的 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7276109/