我正在验证用户电子邮件地址。
大多数人告诉的方式是创建一些独特的令牌将其存储在数据库中并发送给用户。
我只是用站点范围的盐来散列(sha256)电子邮件地址
并将这个散列发送给用户。
我错过了什么还是足以验证?
我正在验证用户电子邮件地址。
大多数人告诉的方式是创建一些独特的令牌将其存储在数据库中并发送给用户。
我只是用站点范围的盐来散列(sha256)电子邮件地址
并将这个散列发送给用户。
我错过了什么还是足以验证?
有几件事可能值得一看(或不值得一看)。
如果有人发现了你的盐,那么他们可以重建你的哈希值并淹没你的系统。在这种情况下,您需要确保用户请求将他们的电子邮件地址添加到您正在创建的任何内容中。(也就是说,我不会完全摆脱将哈希存储在数据库中。)
此外,如果盐是相同的,那么如果他们再次从同一个电子邮件地址请求,哈希值将是相同的。您是否希望每次发出请求时都使用不同的哈希值,即使是相同的电子邮件地址?您可以在散列之前将服务器日期/时间连接到电子邮件地址,以使其每次都不同。
你可以这样做,如果没有人得到服务器端的盐,那就省了。最后是电子邮件验证,如果您出于法律原因不需要这样做,则无需使其变得更复杂。
但这取决于你的目标。是否希望它更加安全?您想易于实施吗?你想要它易于维护吗?您是否在考虑脚本的执行时间?
顺便说一句:在电子邮件中包含长链接时,一件非常讨厌的事情:可能有电子邮件科学家破坏了您的链接,因此可以将代码与链接一起添加,如果代码没有通过链接完全传输,请有一个表格,其中用户可以添加代码。