我有一个忘记密码的页面,其中我需要要求用户他的用户id,以提供他的密码从数据库中,它是工作的,但如果任何人输入任何错误的用户id怎么办。
发布于 2010-09-13 19:39:22
您必须执行SELECT以检查该记录是否存在,如果存在,则继续。
发布于 2010-09-13 19:45:21
请注意,这其中存在一定程度的风险。如果您总是返回一条消息,指出用户ID不正确,则可以使用该消息来猜测系统中的用户ID。攻击者可以使用常用名称的变体来暴力破解此表单,并最终得到一个相当大的用户列表。对于任何给定的帐户,这将为他们提供作为该用户登录所需的一半信息。
我建议您显示一条消息,说明已向该帐户的电子邮件地址发送了一封电子邮件,其中包含重置密码(包括重置所需的时间敏感密钥)的说明,而不管是否在系统中找到了该用户ID。如果他们没有收到电子邮件,他们总是可以重试(假设第一次尝试在用户ID中包含一个拼写错误)。如果他们实际上不知道他们的用户ID,可以通过输入他们的电子邮件地址来恢复它(与此表单的行为类似,总是在表单上显示成功,并在适用的情况下发送电子邮件)。
发布于 2010-09-13 20:04:54
您必须执行以下3个步骤来确保严格的安全性。
1)根据用户on从数据库中获取用户信息。如果信息为空,则向用户发送一个错误,说明UserId无效。
2) a)如果您在创建用户时注册了EmailId,则将密码发送到注册邮件。b)如果您没有注册EmailId,请询问并匹配在用户注册时选择的安全问题。
3)如果可能,尝试将点2)的a)和b)点结合起来,以获得更高的安全性。
https://stackoverflow.com/questions/3700011
复制相似问题