我正在建立一个匿名网站。因此,基本上用户的帐户无法追溯到任何真实的人(例如通过电子邮件地址)。身份验证是我喜欢你的想法的部分。如果我使用电子邮件/通过组合进行身份验证,我可以使用bcrypt来散列电子邮件地址和密码(我知道这是可能的,但它是否实用)?我想如果电子邮件是加密的,那么搜索数据库找到匹配的速度会非常慢。这是真/假吗?你的想法是什么?还有其他想法吗?基本上,我对任何有关如何进行身份验证的想法持开放态度,但如果使用电子邮件进行身份验证,则无法公开/解密。谢谢!
答案 0 :(得分:1)
一旦你对某些内容进行哈希处理,原始内容就无法恢复。
我们以密码为例,通常当用户使用电子邮件/密码注册时,您将对密码进行散列(使用类似bcrypt),然后将散列存储在数据库中。这很好,因为如果攻击者获得了数据库的副本,就无法“解密”哈希值。
在您的情况下,您可能不想散列电子邮件,因为这意味着您将永远无法通过电子邮件发送此人 - 我假设您不想这样做。
如果你决定走那条路,你基本上只是每个用户存储两个密码(这是我能想到的最接近的类比,对不起!)。
希望有所帮助!
编辑:更好的方法是创建一个只提供密码的新帐户 - 然后自动为该人生成用户名。这就像privateinternetaccess.com这样的公司 - 他们会为你生成一些随机用户名 - 这样你就无法联系用户,但他们仍然可以安全地登录你的应用程序。
答案 1 :(得分:1)
我没有看到您的想法有任何问题(假设您从不想异步向用户发送电子邮件)。
登录:
忘记密码程序:在用户发布"忘记密码的时刻#34;用他明确的电子邮件地址表格,你有他的电子邮件。计算eh,查找配置文件,生成一次性令牌,将其存储到配置文件中并将其放入邮件到他的电子邮件地址。然后他可以使用令牌来定义新密码。
更改电子邮件程序:与上述类似,您在表单发布时有明确的旧/新电子邮件地址。
注意: