Authentication web登录/身份验证的最佳实践?

Authentication web登录/身份验证的最佳实践?,authentication,Authentication,为web站点的用户身份验证部分(包括帐户注册、登录和密码重置)编写代码非常简单,但是要创建一个真正好的用户身份验证设置,您需要什么?例如,我认为不将明文密码存储在网站上是最低限度的要求,但这条建议似乎主要是通过口碑传播的,很多网站仍然没有遵循。 对于网站的用户认证部分,还有什么好的建议或要求?例如,用户名应该是用户选择的,还是应该是电子邮件地址?用户注册部分有什么缺陷吗?(CAPTCHA本身可能值得一个完整的主题。)密码重置部分有什么陷阱吗?还有别的吗 编辑: 这里有些重复:关于用户名主题,这取

为web站点的用户身份验证部分(包括帐户注册、登录和密码重置)编写代码非常简单,但是要创建一个真正好的用户身份验证设置,您需要什么?例如,我认为不将明文密码存储在网站上是最低限度的要求,但这条建议似乎主要是通过口碑传播的,很多网站仍然没有遵循。 对于网站的用户认证部分,还有什么好的建议或要求?例如,用户名应该是用户选择的,还是应该是电子邮件地址?用户注册部分有什么缺陷吗?(CAPTCHA本身可能值得一个完整的主题。)密码重置部分有什么陷阱吗?还有别的吗

编辑:
这里有些重复:

关于用户名主题,这取决于用户名在站点上的使用方式(除了登录)。如果您的站点基于用户生成的内容,并且您显示了包含内容的用户名,则允许用户选择自己的,并确保它不是电子邮件地址。此外,如果用户名会被显示,我通常会在注册表上提供一点警告,让用户知道,这样他们就不会在网站上显示自己的全名时只是为了生气

我建议在用户在表单上时,通过某种Ajax调用检查用户名的可用性和有效性。在密码和密码确认消失的情况下重新加载表单,只需考虑一个新用户名并重新输入数据是一件痛苦的事情

其他要考虑的事情是执行MI/MAX长度和密码周围的一些规则…不过,不要让注册变得困难。此外,请接受密码中的特殊字符。我有两个非常强大的密码,我喜欢使用,许多网站不允许我使用它们,所以我的帐户最终没有我自己的帐户安全

验证码是一个好主意,只是要确保它不是超级难弄清楚,这也可能令人沮丧


<> P>有很多事情要考虑,每个选项都有几个选项,但希望这会让你开始。

< P> <强>加密<强/> /P> 昨天有一个关于这个的问题-“,它涵盖了你应该这样做的所有原因

验证码

我不同意里卡多关于验证码的观点——总是需要验证码,即使是真正不受欢迎的网站也会成为垃圾邮件发送者的目标。我建立了一些博客来测试一些我从未从其他地方链接过的代码,这些代码被垃圾邮件发送者奇迹般地发现了。当一个垃圾邮件发送者在你的网站上发布了无数关于伟哥的相同帖子时,你会后悔没有花额外的20分钟来安装验证码。有一些使安装变得非常简单,你可以帮助他们将书籍数字化

别忘了,视障用户需要音频验证码

忘记密码

如果您已经确认了用户的电子邮件地址,那么您可以为他们生成一个随机的新密码。确保提示他们立即更改密码,因为人们会立即忘记随机生成的密码

电子邮件

不要费心去实现覆盖所有可能电子邮件地址的复杂正则表达式。对@进行简单检查,然后让用户单击发送到其电子邮件地址的链接进行验证。这是目前的普遍做法,但我仍然遇到一些人试图“聪明”地对待它

表单验证

除了在注册表上进行服务器端验证外,还应该以AJAX的形式进行客户端验证,让用户在填写时知道他们选择的用户名是否被使用、密码是否可接受等。用户可能会因为不得不多次重新提交注册表而感到沮丧

身份验证本身

让人们使用用户名或电子邮件地址登录是很好的,因为人们更容易记住电子邮件地址而不是用户名,特别是当他们有一段时间没有访问过您的站点时


如果你的网站需要增加安全性(例如,如果你在卖东西,人们只需登录就可以得到),请请求另一条信息。询问他们的邮政编码是一个好主意,因为它只需要额外几秒钟的时间就可以输入,这使得暴力破解密码变得相当困难

请确保您的登录页面使用SSL进行保护,如果您不这样做,则用户名和密码将以明文形式通过internet发送。如果其他地方没有敏感信息,那么站点的其余部分就不需要受SSL保护。

MSDN发表了一篇文章,涉及其中一些问题;有一份副本。大多数建议反映了这里的想法;这篇文章的另一个想法是“通过您的注册漏斗跟踪流量”。跟踪系统中错误、警告和恢复部分的点击量,看看您是否需要进行一些可用性增强。

我想说,您可以使用许多广泛使用的社交网络API来为您完成这项工作。通过这样做,您将能够完全消除登录和用户身份验证(读取密码和用户数据)方面的许多安全缺陷,并将其传递给上述社交网络的稳定用户

因为整个过程只需点击一次就可以完成 按钮,它也使您的用户体验更好,可以顺利集成 进入你的用户界面

Facebook、谷歌、LinkedIn、Twitter和Dribble就是此类API的一些例子。根据您对目标用户群的想法选择您的用户群

此外,根据我最近的经验,该框架使得 任务很简单

我看到了这个问题