注册密码的最佳做法?

问题描述 投票:1回答:3

我有一个用户注册帐户的网站。 在注册字段上,表单字段为:

  • 名称
  • 电子邮件
  • 确认邮件
  • 用户名

但是没有密码字段。 当他们单击“提交”时,会通过电子邮件发送非常复杂的密码,例如LHJVjhwnv%uu5RbWM9!jeDZUQb

我呼吁开发人员改用它,以便用户可以在注册表单上设置自己的密码。 确认表单上的密码,然后向其指定的电子邮件发送确认链接。 然后,他们至少可以登录到自己的帐户并通过确认链接验证电子邮件。 或者,如果没有,则每次他们登录该网站时,都会提醒他们验证电子邮件等,否则他们将无法在该网站上做很多事(示例)。 这样,即使他们没有获得确认链接,他们仍然可以将其帐户电子邮件更新为其他电子邮件,然后重新发送 。 至少在此阶段,他们可以登录帐户,而不是完全不登录。

我收到开发人员的回复如下

“在注册时提供密码的问题是,您将拥有大量假帐户。因此,仅使用不存在的电子邮件地址进行注册的人。至少通过电子邮件验证,您可以证明用户确实存在。如果他们使用错误的电子邮件注册,则可以重新注册。”

我想问大家,开发人员采用的当前方法是否可以接受?

如果没有,我有什么好的理由可以说服开发人员进行更改?”

我试图解释以下内容

  • 每天有9-10人谁注册,然后直接使用之后 ,“密码重置”的形式。 该表格要求他们输入注册时使用的电子邮件地址,然后通过电子邮件将其设置为新密码的链接发送给他们。 所以,如果他们是无论如何设置新的密码,为什么不干脆让他们将其设置在登记表上摆在首位? 为什么注册后直接每天都有9-10个人使用密码重置字段? 我很确定是因为他们似乎正在努力应对这些复杂的密码(我不反对),这些密码已通过电子邮件发送给他们,并且缺少键或字符,或者似乎不知道复制/粘贴或类似内容那。 如果他们只能在第一时间设置自己的密码,则由于电子邮件密码无法使用,因此无需在此后立即运行密码重置字段。 我认为每天都总是有密码重置电子邮件很奇怪。 自从我开始使用Mandrillapp跟踪外发电子邮件以来,并不是每个人都可以,但是每天只有9到10个人。 下一点将对此进行备份。

  • 每天至少有2-3个人填写联系表,表明他们收到的密码无效。 如果他们可以自己设置,就可以避免一切。 甚至有更多的事情就是不要打扰联系。

  • 在将近8000个帐户中,有50%从未登录。我强烈怀疑包含其密码的注册电子邮件将发送到其垃圾文件夹/垃圾邮件文件夹。 尽管我已经设置了正确的SPF,DKIM等。 2个月前,我决定开始使用山魈发送邮件,以确保它进入收件箱,但仍然有至少1-2人/天那说,他们没有得到他们的电子邮件..这困扰我。 如果他们可以定义自己的密码,则不必担心通过电子邮件等待密码或完全忘记密码。 这进一步突出了我最初的关注。

感谢您的时间!

security email authentication passwords registration
3个回答
1
投票

我假设您已经有一个有效的密码重置页面,因此您可以使用相同的代码进行注册:

  1. 让用户使用他的电子邮件注册。
  2. 向用户发送带有令牌的链接,令牌的哈希存储在数据库中。
  3. 如果用户单击链接,并且令牌有效,则欢迎他并让他输入自己的密码。

这正是密码重置所需要的,您的站点不再(不)安全,因为攻击者还可以使用密码重置功能。

当然,弱密码是一个问题,因此必须拒绝弱密码。 同样,这与您在密码重置页面上所做的相同。 对于密码重置,您也不会发送纯文本密码。

未确认的帐户可以在一定时间后删除,这意味着用户没有执行任何操作。 如有必要,用户可以再次注册。 仅当在进行确认之前不允许用户登录时,这才起作用,这支持上面的过程。 当然,此确认是否如此重要取决于网站。


0
投票

不通过邮件发送密码的主要原因是安全性:邮件不是安全的介质。 如果您在其中输入密码,那么很多人都可以看到它-考虑让人们无需任何密码即可使用您的服务,而是理解我的意思。

允许人们选择自己的密码的主要缺点是95%的用户将使用123456password

大多数大型站点都使用这种方法来平衡安全性,业务需求和舒适度:

  • 允许用户设置自己的密码。 拒绝最简单的程序(为此提供了库)。 注意:复杂的密码规则将客户带走。
  • 通过邮件发送确认链接。
  • 在单击链接之前,请勿登录。
  • 如果他们仍然尝试登录,请告诉他们必须首先单击链接,并提供“再次发送确认链接”链接,以防丢失第一封邮件。

-1
投票

我呼吁开发人员改用它,以便用户可以在注册表格上设置自己的密码。

这使您面临大量弱密码和重用攻击。 对重复使用进行了经验研究, 据报道介于50%和76%之间 。 其他学术研究表明, 几乎所有用户(几乎100%)都在重复使用密码

因此,分配密码有助于解决主要的实际问题。 分配密码后,尽管用户可能会在另一个站点上重复使用分配的密码,但是您也会遭受相同的攻击。


...我想问大家,开发人员采用的当前方法是否可以接受?

是的,只要密码符合安全性要求就可以接受。 我什至更喜欢它,尤其是当根据错误的密码列表检查用户选择的密码时。

错误的密码列表很重要,因为我们知道攻击者会使用它们。 由于过去的所有违规,字面上有数百万个密码(我是否提到过密码重用是大流行性疾病?)。 这些列表很容易找到,一位研究人员最近发布了他的600万以上的列表。 请参阅我如何收集密码


亚伦对电子邮件和纯文本是正确的。 实际上,您可以放置​​另一个安全控件来限制曝光。 即,要求您的邮件服务器使用SSL / TLS或连接失败。

或者,生成密码并将其显示在屏幕上。 指示用户打印密码,以免他们忘记密码。 我什至告诉我的用户将它们写下来,并将其放在钱包或钱包中。

主要威胁是基于网络的攻击者,他们试图通过弱密码/受伤密码/错误密码获得对服务器的未授权访问。 因此,带外/通道外电子邮件不是一个太大的问题。 丢失的钱包或钱包也不是什么大问题。 令人担忧的是基于网络的攻击者猜测密码或使用来自其他网站漏洞的{username,passwords}元组。


每天都有9-10人注册,然后立即使用“密码重设”表格。 该表格要求他们输入注册时使用的电子邮件地址,然后通过电子邮件将其设置为新密码的链接发送给他们。

好的,这是安全缺陷,因为用户可以绕过安全控制。

出于其价值,我经常使用随机密码生成器来生成帐户密码。 我什至不介意把它们写下来。 当我需要访问该帐户时,只需完成“密码丢失”过程。

这就是这些东西对我而言多么低的价值。 每个该死的站点都希望用户管理帐户和密码。 我已经厌倦了花费精力来管理所有帐户,所以我什至不浪费时间。


注册时提供密码的问题是您将拥有大量假帐户。 因此,仅使用不存在的电子邮件地址进行注册的人。 至少通过电子邮件验证,您可以在一定程度上证明用户的存在。 如果他们使用错误的电子邮件注册,则可以重新注册

好的,所以这是一个不同的问题。 通常可以使用CAPTCHA来简化BOT注册。 我从未真正研究过用于真实用户/虚假帐户的内容。

伪造账户有什么好处? 在我看来,用户正在尝试怀孕一半。 他们要么有一个帐户,要么没有一个帐户。


在将近8000个帐户中,有50%从未登录。我强烈怀疑包含其密码的注册电子邮件将发送到其垃圾文件夹/垃圾邮件文件夹。 尽管我已经设置了正确的SPF,DKIM等。

好吧,这是一个不同的问题(您应该通过测试确认)。 这就是显示用户密码并告诉他们打印页面。


密码管理主题还有很多。 您应该阅读Peter Gutmann的Engineering Security的第7章。


我已经呼吁开发人员...

最后,你是老板。 如果开发人员或承包商未遵循说明或违反要求的代码,请解雇他们。 在请求某人付款之前,我该死的。

程序员一角钱,您可以在Rent-A-Coder之类的地方找到很多。 印度人和巴基斯坦人几乎一无所获(在某些情况下,每天的收入不足10美元)。 我不知道他们怎么能这么少地工作和生存...

© www.soinside.com 2019 - 2024. All rights reserved.