当前位置: 首页 > 编程语言 > C#

密码恢复无需通过电子邮件发送密码分享

时间:2023-04-10 22:01:50 C#

C#学习教程:无需通过电子邮件发送密码即可恢复密码即使无法访问Alice的电子邮件,也会被重置。密码重置的安全问题减轻了这一点,但它并不令我满意。2)Alice的新密码以明文形式发回给她。我想向她发送一个指向我页面的特殊链接(例如example.com/recovery.aspx?P=lfaj0831uefjc这样的页面),这样她就可以更改密码。我想我可以通过创建某种过期密码恢复页面表并将这些页面发送给要求重置的用户来自己完成。不知何故,这些页面还可以在幕后更改用户密码(例如,通过手动重置它们,然后使用新密码的文本来更改密码,因为不知道旧密码就无法更改密码)。我敢肯定之前有人遇到过这个问题,这个解决方案让我觉得有点笨拙。有没有更好的办法?一个理想的解决方案不会通过直接访问数据库来违反封装,而是使用数据库中现有的存储过程……尽管这可能是不可能的。我目前正在Spring+SpringSecurity之上实现一个开源用户管理系统,这就是我解决丢失密码问题的方法。用户的帐户必须有一个预先注册的电子邮件地址。要请求重置,用户在表单中输入他们的帐户名。生成临时“重置代码”并将其附加到帐户,并通过电子邮件发送给嵌入在超链接中的用户。收到电子邮件后,用户单击一个链接,将他们带到一个页面以输入新密码。在接受新密码之前,重置代码(来自链接)将根据存储的代码进行检查,以确保它是正确的并且没有过期。这样可以避免在电子邮件中发送密码(以明文形式)。它还可以防止一个人重置另一个人的密码只是为了烦人,因为密码重置仅在使用链接后发生。但它依赖于用户的电子邮件帐户是安全的,并且在传输过程中不会被窥探。对于某些应用程序,这可能是不可接受的风险。不利的一面是,您需要非常小心地更改用户的注册电子邮件地址。至少,用户必须输入他们当前的密码以及地址更改请求……以防止通过无人值守的登录会话进行黑客攻击。我建议添加额外的检查级别,这里有一些选项可供选择。首先,您可以将请求者的IP地址保存在数据库中,然后在他们单击重置链接时将其与当前计算机的IP地址进行比较,如果匹配则重置密码。如果电子邮件被截获,尝试重置密码的人必须有匹配的IP地址。使用cookie并存储唯一值,可能是GUID、MD5哈希等。因此,当用户发出密码重置请求时,cookie会存储在他们的计算机和数据库中,当用户单击链接时,本地cookie必须与数据库值匹配,否则他们将无法重设密码。一般来说,我完全反对在电子邮件中发送密码,所以我更喜欢密码重置链接选项而不是新的纯文本密码。以上就是C#学习教程:不通过邮件发送密码找回密码。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。涉及侵权,请点击维权联系管理员删除。如需转载请注明出处: