2

您正在为受密码保护的网站编写登录例程。给出您可能想要捕获的特定用户输入错误的示例,以及您可能如何处理它们。

这是一道面试题

我回答如下

我们应该同时添加客户端错误和服务器端错误。

客户端错误:检查用户是否在用户名字段中没有输入任何内容。我们可以使用 javascript 显示“未输入用户名”的消息 服务器端错误:我们可以检查用户名是否在数据库中不存在并且可以抛出错误消息。我们可以检查输入用户名的密码是否与数据库中的密码不匹配。

任何人都可以建议。这些是我们能捕捉到的唯一错误吗?

4

2 回答 2

4

我会考虑语法上无效的用户名(空;太短或太长;包含无效字符,如可能的空格、引号或 shell/SQL 元字符;结构上无效,即以点或数字开头)和语法上无效的密码(太短甚至是空的,太“简单”,或者等于用户名)。在所有这些情况下,您都可以使用 JS 验证客户端,为“创建新用户,选择用户和密码”视图回收相同的代码。

服务器端,您可能有后端连接错误(即无法判断用户是否存在——不完全是用户错误,但我们可能希望在这里管理它)、找不到用户、密码不匹配,并且可能“禁用登录”(这在自动创建用户网站上很常见:登录存在,但必须通过单击通过电子邮件发送的链接来验证。再说一次,人们可能希望将这些“尚未用户”放在存储分开以避免在真实用户数据库上阻塞/搅动)。当然,您可能还想添加一个特殊的禁用状态和消息(“您的会员费已过期”)。此处可能会添加其他额外的“错误”和“警告”,例如“您没有从通常的 IP 块登录 [,您介意回答这个安全问题吗?]”

于 2012-06-23T09:35:00.527 回答
2

IMO,主要问题(假设SQL作为用户和密码的数据库)是SQL Injection,例如添加特定用户作为管理员访问权限。

可以使用服务器端的库来处理所有用户输入来处理它——而不是尝试自己做。

于 2012-06-23T08:34:56.793 回答