Cryptography 重置用户密码。这个原则行吗?
我已经为我的站点实施了密码重置。请您指出我最终遇到的问题或做过的傻事,好吗 服务器和客户端位于不同的位置。服务器是Sails(node.js),而客户端是Angular,DB是postgresqlCryptography 重置用户密码。这个原则行吗?,cryptography,sails.js,Cryptography,Sails.js,我已经为我的站点实施了密码重置。请您指出我最终遇到的问题或做过的傻事,好吗 服务器和客户端位于不同的位置。服务器是Sails(node.js),而客户端是Angular,DB是postgresql 用户希望更改其密码。他键入电子邮件,密码将发送给他。验证码在这里 服务器将首先检查是否存在此类电子邮件。如果是的话,那么它将 生成GUID(节点的UUID库)。在数据库中使用用户电子邮件(也可能是用户id)写入GUID。如此简单的表格,带有GUID、电子邮件和时间戳 完成后,服务器将创建一个具有此类型
这里还有很多事情要做,然后我写了下来,但本质上这是我做的方式。任何评论都是非常感谢的:)这是一个非常有效的流程。为了增加安全性,通常会提出一个安全问题-这可以阻止泄露电子邮件帐户的用户传播更多的损害。这是一个完全有效的流程。对于额外的安全性,通常会提出一个安全问题-这会阻止泄露电子邮件帐户的用户传播更多的损害。GUID不是密码重置链接的好标记,因为它通常是基于时间的,因此是可预测的 您应该使用不可预测的内容,例如:
select md5("some_secret_phrase"||uuid_generate()||old_password_hash);
GUID不是密码重置链接的好标记,因为它通常是基于时间的,因此是可预测的 您应该使用不可预测的内容,例如:
select md5("some_secret_phrase"||uuid_generate()||old_password_hash);
到底是怎么回事?(攻击者无论如何都可以将电子邮件地址放入表单中并生成新的令牌)当攻击者能够预测令牌时,即使没有收到密码重置电子邮件,他也能够重置受害者的密码。这到底是怎么回事?(攻击者无论如何都可以将电子邮件地址放入表单并生成新的令牌)当攻击者能够预测令牌时,即使没有收到密码重置电子邮件,他也能够重置受害者的密码。