我正在验证用户电子邮件地址。
大多数人告诉的方法是创建一些唯一的令牌存储它在db和
发送给用户。
我正在使用散列(sha256)电子邮件地址和全站点盐 并将此哈希发送给用户。
我错过了什么或者这足以验证?
答案 0 :(得分:1)
你可以这样做,如果没有人获得服务器端的盐,那就省了。最后它是电子邮件验证,如果您出于法律原因不需要这样做,则无需使其更复杂。
但这取决于你的目标。想要它更安全吗?你想要容易实现吗?你想要它易于维护吗?你在考虑脚本的执行时间吗?
BTW:在电子邮件中有一个很长的链接是一个非常讨厌的事情:可能有电子邮件客户端断开你的链接,所以可能会添加代码和链接,如果代码没有通过链接完全转移,有用户可以添加代码的表单。答案 1 :(得分:1)
有些事情可能值得一看(或不是)。
如果有人发现了你的盐,那么他们就可以重建你的哈希并淹没你的系统。在这种情况下,您需要确保用户请求将其电子邮件地址添加到您正在创建的任何内容中。 (也就是说,我不会完全放弃在数据库中存储哈希值。)
此外,如果salt是相同的,如果他们再次从同一个电子邮件地址请求,则哈希将是相同的。每次发出请求时,您是否想要一个不同的哈希值,即使是相同的电子邮件地址?您可以将服务器日期/时间连接到电子邮件地址,然后再散列它以使其每次都不同。