检查数据库中用户标识的可用性

时间:2010-09-13 11:36:44

标签: asp.net

我有一个忘记密码页面,我需要向用户询问他的用户ID,以便从数据库中提供他的密码并且它正在工作但是如果有人输入任何错误的用户ID该怎么办。

6 个答案:

答案 0 :(得分:2)

请注意,这有一定程度的风险。如果您始终回复显示用户ID不正确的消息,则可以使用该消息来猜测系统中的用户ID。攻击者可以使用常见名称的变体来强制使用此表单,并最终获得相当大的用户列表。对于任何给定的帐户,这为他们提供了以该用户身份登录所需的一半信息。

我建议您显示一条消息,说明已将电子邮件发送到该帐户的电子邮件地址,并提供重置密码的说明(其中包括重置所需的时间敏感键),无论用户ID如何是否在系统中找到了。如果他们没有收到电子邮件,他们可以再次尝试(假设第一次尝试包含用户ID中的拼写错误)。如果他们实际上并不知道他们的用户ID,可以通过输入他们的电子邮件地址来恢复该用户ID(与此表单的行为方式类似,始终在表单上显示成功,只是在适用的情况下发送电子邮件)。 / p>

答案 1 :(得分:2)

您必须执行以下3个步骤以确保严密的安全性。

1)基于userid从数据库中获取用户信息。如果信息为null,则向用户发送错误,指出UserId无效。

2)a)如果您在创建用户时注册了EmailId,则将密码发送到已注册的邮件。    b)如果您没有注册EmailId,请询问并匹配用户注册时选择的安全问题。

3)如果可能的话尝试结合a)& b)要点2)以提高安全性。

答案 2 :(得分:1)

您必须SELECT检查是否存在该记录,如果存在则继续。

答案 3 :(得分:1)

只需返回一条消息,说明他们输入的用户ID不正确。

答案 4 :(得分:1)

如果你问他们如果他们完全给你另一个用户的有效身份证件你做了什么,那么我假设你正在用你正在恢复的密码做一些非常不安全的事情(你不只是在展示密码是你吗?) - 这样的大多数系统会通过电子邮件向您发送密码,至少提供安全性,只有关联的电子邮件帐户才能获得密码。

答案 5 :(得分:0)

SELECT * FROM users WHERE username = inputhere

if (mysql_num_rows($result) > 0)
{
  // found it
}
else
{
  // doesn't exist
}

那是你在找什么?