这个问题有更多的关于我如何设置我的服务器端代码为一个简单的登录脚本。我对实现我的目标的最佳方式感兴趣,当然这是为了针对数据库验证用户用户名和密码,并向他们提供成功的登录名,注册页面或找到的用户名或密码,但替代方案是错的。登录服务器端逻辑
现在,我把它建立在我的sql查询扫描数据库的用户和传递:
SELECT * FROM test WHERE userName='" + userName + "' AND pass='" + password + "'"
问题的这种做法,要么返回一个true或false ......我不能告诉其中一个输入是否正确,另一个不正确。它要么找到记录,要么没有。
因此,我可以基于用户名进行查询,如果发现,请在将用户传递给成功登录之前检查记录是否有正确的密码。这样我知道密码是否是错误的,但我不知道密码是否正确,用户只是输入错误的用户名。
另外,我可以扩展,如果没有找到用户,请根据密码重新查询数据库,并确定是否可以找到记录但用户名不匹配。这似乎与数据库来回很多,这很好。但我想听取一些专家的意见,看这是否是一种正确的方法。
我没有看到单独的查询密码的地步。不应该阻止多个用户选择相同的密码。从安全的角度来看,您永远不会希望向用户反馈说“该密码已被使用”。 –
在处理登录失败时提供太多信息通常被认为是不好的做法 - 它为黑客提供了可用来渗透系统的信息。 查看hotmail或google邮件上的用户流量,了解目前可接受的方式。告诉黑客,他们得到了正确的用户名,但错误的密码告诉他们继续尝试不同的密码;告诉他们他们有一个有效的密码,但没有正确的用户名允许他们测试普通密码(神,性别和密码,根据民间传说)的存在..) –
有道理。这是我正在寻找的反馈。谢谢。根据您的反馈意见,我目前正在采取这种方式,采用适当的方法? – ryandlf