所以,我一直在玩asp:PasswordRecovery
并发现我真的不喜欢它,原因有以下几种:
1)即使无法访问Alice的电子邮件,也可以重置Alice的密码。密码重置的安全问题减轻了这一点,但并不能让我满意。
2)Alice的新密码以明文形式发回给她。我想向她发送一个特殊链接到我的页面(例如像example.com/recovery.aspx?P=lfaj0831uefjc这样的页面),这会让她更改密码。
我想我可以通过创建某种过期密码恢复页面表并将这些页面发送给要求重置的用户来自行完成。不知何故,这些页面也可以在幕后更改用户密码(例如,通过手动重置它们然后使用新密码的文本来更改密码,因为密码不能在不知道旧密码的情况下改变)。我确定其他人之前遇到过这个问题,这种解决方案让我觉得有点笨拙。有更好的方法吗?
理想的解决方案不会通过直接访问数据库来违反封装,而是使用数据库中的现有存储过程......尽管这可能是不可能的。
答案 0 :(得分:4)
我目前正在Spring + SpringSecurity之上实现一个开源user management system,这就是我如何解决丢失的密码问题。
这可以避免在电子邮件中发送密码(明文)。它还可以防止一个人重置另一个人的密码只是为了讨厌,因为密码重置只发生在链接使用后。
但它依赖于用户的电子邮件帐户是安全的,并且在电子邮件中没有在传输过程中窥探。对于某些应用程序,这可能是一种不可接受的风险。
另一方面是您需要非常小心地更改用户的注册电子邮件地址。至少,用户必须输入他们当前的密码以及更改地址的请求...以防止通过无人参与的登录会话进行黑客攻击。
答案 1 :(得分:2)
我建议添加额外级别的检查,以下是一些可供选择的选项。
总的来说,我完全反对在电子邮件中发送密码,所以我更喜欢密码重置链接选项而不是新的纯文本密码。