gpt4 book ai didi

c# - 无需通过电子邮件发送密码即可恢复密码

转载 作者:太空狗 更新时间:2023-10-30 00:59:12 24 4
gpt4 key购买 nike

所以,我一直在玩 asp:PasswordRecovery 并发现我真的不喜欢它,原因有几个:

1) 即使无法访问 Alice 的电子邮件,也可以重置 Alice 的密码。密码重置的安全问题缓解了这种情况,但并不能真正让我满意。

2) Alice 的新密码以明文形式发回给她。我宁愿向她发送一个指向我页面的特殊链接(例如像 example.com/recovery.aspx?P=lfaj0831uefjc 这样的页面),这样她就可以更改密码。

我想我可以通过创建某种过期密码恢复页面表并将这些页面发送给要求重置的用户来自己完成此操作。不知何故,这些页面还可以在幕后更改用户密码(例如,通过手动重置它们,然后使用新密码的文本来更改密码,因为在不知道旧密码的情况下无法更改密码)。我敢肯定其他人以前也遇到过这个问题,这种解决方案让我觉得有点老套。有更好的方法吗?

理想的解决方案不会通过直接访问数据库来违反封装,而是使用数据库中现有的存储过程......尽管这可能是不可能的。

最佳答案

我目前正在实现开源 user management system在 Spring + SpringSecurity 之上,下面是我解决密码丢失问题的方法。

  1. 用户的帐户必须有一个预先注册的电子邮件地址。
  2. 要请求重置,用户需要在表单中输入他们的帐户名。
  3. 生成临时“重置代码”并将其附加到帐户,并通过电子邮件发送给嵌入在超链接中的用户。
  4. 收到电子邮件后,用户点击链接进入一个页面以输入新密码。
  5. 在接受新密码之前,将根据存储的代码检查重置代码(来自链接),以确保它是正确的并且没有过期。

这避免了在电子邮件中发送密码(明文)。它还可以防止一个人重置另一个人的密码只是为了造成麻烦,因为密码重置仅在链接被使用后发生。

但它确实依赖于用户的电子邮件帐户是安全的,并且电子邮件在传输过程中不被窥探。对于某些应用程序,这可能是 Not Acceptable 风险。

等式的另一部分是,您需要非常小心地更改用户的注册电子邮件地址。至少,用户必须在请求更改地址时输入他们当前的密码......以防止通过无人值守的登录 session 进行黑客攻击。

关于c# - 无需通过电子邮件发送密码即可恢复密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1041181/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com