我知道有很多网站可以让您更改自己的网站用户名,但同时有很多用户名不允许使用。我确定某些不允许这样做的原因可能只是为了简单起见,但也可能出于安全性考虑。安全的观点,您说允许个人更改用户名是好还是不好的做法?
鉴于正确的操作,我目前无法想到任何不允许这样做的原因(即,使其不可能)对于重复的用户名,需要输入当前密码以确保仍然满足有关不包含用户名等方面的密码要求),但我不禁认为我缺少一些内容。
我知道从用户的角度来看,这是允许他们更改其用户名的优势。例如,如果他们将用户名设置为电子邮件地址,然后决定使用其他电子邮件地址。相反,如果您允许他们更改用户名,我会对应用程序和登录过程的安全性带来的好处与风险感到好奇。
EDIT:
答案为公开显示的名称带来了好处,但要澄清的是,问题不在于公开显示的名称,而是用于登录的唯一用户名。
#1 楼
从安全和社区的角度来看,许多人都在考虑不允许更改名称的原因。但是,即使用户名与显示名称分开,也有很多合理的理由允许更改用户名,例如:有人更改了他们的真实姓名或名称由于婚姻,家庭状况,逃避缠扰/骚扰等原因,他们更希望将其称为“
即使只是一个用户名,必须使用带有创伤的旧名称可以进一步加重创伤。此外,缠扰者/骚扰者很有可能知道其目标的登录凭据,并且能够更改凭据的两个部分都可以降低攻击面;此外,监视登录到废弃用户名的尝试可以针对不良代理建立法律依据。 />
即使在私人用户名的情况下,被迫使用自己的“死名”也很痛苦。 (我可以在这方面谈谈个人经验。)
人们有一个用户名,无论出于何种原因,他们都不适合他们
在我看来,这对内部用户名的影响较小,但最好还是偏于善良。
这些对于用户舒适度都很重要,并且在许多情况下,人们可能还是会以新名称创建一个新帐户,因此也应该支持它。
避免社交工程固然很重要,但是有一些方法可以缓解这种情况,例如各种形式的验证(如在多个社交网络上看到的),公共密钥加密和配置文件指示符(“名称上次更改是N个月前;名称已更改K次”)。并且,由于已对这个问题进行了编辑,以解决内部用户名而不是公共显示名的问题,所以这些问题甚至与讨论无关。只需创建新帐户的人也可以使用更改用户名的用户,如果用户名更改选项不可用,则用户可能会创建一个新帐户-可能使用与旧帐户相同的密码,否则可能会导致
最好保留对用户名更改的审核记录,并禁止创建使用先前使用的用户名的新帐户(至少如果用户名最后一次在用户名中使用过去,例如年份),但是没有理由首先将用户名用作将数据与用户帐户相关联的主键,因为更改用户名具有合法目的,并且所有帐户记录均应规范Ť o首先是抽象的仅供内部使用的ID。
评论
社区的性质也有关系。如果您的用户名本质上是私有的(如Gmail或大多数需要注册的非社会服务),则允许任意更改是没有争议的。但是,如果用户名既是公共的又是相关的(例如在论坛,博客,新闻站点,甚至是SO上),则允许任意更改用户名会导致更多问题,这将超出其解决的范围,并且只会促进追究和逃避责任。
–aroth
17/12/20在11:24
原因编号3适用于我。我的用户名,电子邮件帐户,LoL帐户等是“ kukis13”。当我在自己的祖国使用时,这是一个非常好的用户名,但是自从我移居瑞典以来,它的含义非常令人讨厌。所以我很想更改它,但大多数服务都不允许这样做
–kukis
17/12/20在13:56
原因4:帐户注册所在的网站带有隐藏的帽子,只有在您更改用户/显示名称时才会触发该帽子。
–马修·金登(Mathieu Guindon)
17年12月20日在17:35
虽然此答案目前投票最多,但确实确实在允许个人更改用户名方面提出了好处,但它仍未解决“从安全角度来看,您是好是坏”的实际问题。允许个人更改用户名的做法?”例如,考虑一个银行网站或用户名是私有的任何其他网站,并且可能没有任何公共显示名称。
–杰夫Y
17年12月20日在23:05
@@ MichaelRichardson当然就是这种情况,除了@ -mentions。当您意识到提到@Alice的帖子现在由Bob撰写时,这有点令人困惑,但这是一个较小的UX问题。
–克里斯H
17年12月21日在8:48
#2 楼
我会说,只要他们不能更改其唯一标识符。即他们可以更改显示的名称,但是该名称会与不变的用户ID号绑定在一起(这也会使您的DBA更加快乐)。我还要确保用户不能将其名称更改为其他用户的旧名称(以帮助减轻Anders所说的欺诈可能性)。因此,您将希望存储用户一次使用的所有名称。最好要求更改用户名,处理合法的情况(例如电子邮件案),而不要采用用户自动执行的方法。
评论
我已经有一个UserId字段,无法更改主键。目前,我们会根据您的建议,向与我们联系以请求更改的个人提供建议,但是由于手动操作,该建议的可扩展性不佳,需要我们为他们的安全性问题寻求答案以进行验证。因此,我想到了将该功能添加到我们网站的个人资料页面,或者根本不允许使用该功能,然后是这个问题。
–杰夫Y
17年12月19日在22:33
也许Bloom过滤器适合存储以前的用户名?这将带来额外的好处,即先前的用户数据实际上并未存储,但可以查找。
–user1997744
17年12月20日在0:17
有趣的是,Twitter允许随时更改用户名(不仅是“名称”,还可以@username),并允许更改为以前由其他人拥有的用户名-甚至没有延迟(即在他们更改用户名的几秒钟内)。
–胸骨
17/12/20在1:02
微软就是用Windows做到这一点的。您可以更改用户名,登录名等,但它仍链接到原始c:\ user \ <原始用户名。目录
–莫格说要恢复莫妮卡
17年12月21日在9:19
@ solomonoffs-secret不幸的是,当Twitter用户更改其名称时,所有@提及都会中断。现在,您对那个人的半隐式回复可以在普通推文中看到。
–方舟坤
17/12/21在12:29
#3 楼
我们当前使用您的建议,要求与我们联系以请求更改的个人,但是由于手动工作,该建议的可扩展性不强,需要我们为他们的安全性问题寻求答案以进行验证。
绝对是错误的。不仅您必须手动执行此操作,而且还必须向处理此类请求的每个人都提供安全性答复。所有准备工作,即填写新名称,写下他们的理由(如果您愿意)并回答安全问题。现在,服务台人员只需要批准或拒绝该请求即可。请注意,您可能会走中间路线:允许进行一次自动更改,例如每年一次。这足够大,可以处理99%的请求,但又可以限制到足以防止大多数滥用行为。
评论
是的,但这不是我的主意,这就是我之前的工作方式。首先,这是该问题的部分原因;所以我可以改善它:)
–杰夫Y
17年12月21日在18:20
单个更改是一个任意的限制,总会有人需要更多更改或不了解它。另一方面,甚至还有一些网站在做一些事情,例如允许您一次更改生日。万一您在注册时遇到错字?如果您愿意的话,我发现进行更改以将其完全删除更为重要。
– allo
17年12月22日在13:18
@allo当然,总是会有一些例外情况。但这不会使此任意限制无效。如果它为您节省了一些手动工作,那么它很有用。我猜想,此限制可以节省90-99%。也许使用不同的限制会更好...请尝试一下并收集一些数字。 +++帐户删除:当然可以,但这不是这里的主题。
– maaartinus
17/12/22在15:37
#4 楼
如前所述,允许用户轻松更改用户名(我们称其为“显示名称”以消除歧义)使用户更容易躲避骚扰或欺骗其他用户的后果。如果您的网站具有社交性,请考虑是否禁止,阻止,报告,聊天记录等会通过用户名切换(即,即使名称已更改,用户是否也知道他们正在与同一个帐户通话? )。要考虑的另一点是匿名或隐私问题。某人经常用自己的真实姓名开户,然后出于任何原因后悔将真实身份附加到该帐户上,这是很常见的。有时这是因为他们被欺负了,但通常是出于正当理由以及过度分享生活中的个人详细信息,或者成为欺凌的受害者。这个最近出现的问题是另一个例子:
我不小心输入了一个网站的密码作为另一个网站的用户名。经过人工审查或允许更改数量有限的帐户名称听起来像是合理的方法。
#5 楼
尚未提出来,我感到有些惊讶。但是我认为许多站点不允许您更改用户名的原因是因为如果用户的帐户信息被盗,这将带来问题,因为攻击者现在可以完全更改该帐户上的所有内容。无疑,要为一个个人的帐户被窃取,而他们的详细信息已被窃取,并且所有内容都已全部更改,这将变得更加复杂。拥有一条永不改变的通用信息,可以使用户在碰巧无法访问帐户时更容易地参考他们的帐户。我认为这里的其他一些答案提供了更好的解决方案解决方案,但我不确定其中有很多涉及您实际询问的内容,这与允许更改用户名的安全性有关。
评论
不过,有解决方案。首先,电子邮件通知将提供一种保证用户合法的形式。我见过许多网站“忘记了用户名?”包含电子邮件地址的选项(您可以跟踪过去的电子邮件地址,以便更改这些电子邮件地址不会对您造成伤害)。坦率地说,我希望客户支持(如果有人打算劫持您的帐户,通常将需要客户支持)应该能够通过其旧用户名搜索您的帐户。无论如何(为了防止滥用功能),都应该将其存储起来以进行问责。
–凯特
18年1月2日在20:59
#6 楼
我认为您最好不要允许用户更改用户名,但这实际上取决于您的威胁模型。允许这样做的利弊如下:优点:
如果用户的凭据在另一个站点上遭到破坏,则允许用户更改其用户名使得从受感染站点到您的站点的凭据匹配变得更加困难,从而使凭据填充攻击变得更加困难。请注意,更改用户密码的用户可以实现相同的目标。
缺点:
如上所述,它使用户更容易执行社交工程在您的站点上相互攻击。
您已经增加了站点的复杂性,从而增加了潜在的安全漏洞的数量。例如,如果您检查重复项,那么您现在有了一个用户枚举漏洞。
评论
好奇枚举是一个问题,如果它是用户选择的用户名而不是电子邮件地址。猜猜选择使用其电子邮件地址的用户可以算作...
–ste-fu
17年12月19日在21:47
这只是一个例子。我要说的是,您的流程/代码越复杂,出错的可能性就越大。它很可能是重复检查中的SQL注入漏洞,CSRF的目标或任何其他错误。
–丹·兰德伯格
17年12月20日在18:45
创建帐户时,时段是否不必检查重复项?您可以通过强制延迟来减少用户枚举(即使是担心的事情),但是大多数网站将用户名视为公共信息是有原因的。我不确定我是否可以更改用户名,因此更容易进行社会工程攻击。我认为您正在考虑人们以某人的旧名字取名吗?但是,通过将该名称视为已使用(可以是别名,也可以将其视为已删除的帐户),这应该完全可以避免。
–凯特
18年1月2日在21:04
#7 楼
您实际上是在两个竞争问题之间取得平衡,第三个因素是问题。第一个因素是网站上用户的安全性,更改用户名是诱骗他人以欺骗他们的简便方法。第二个原因是,更改用户名是一种诱骗他人以使其与他人脱离的简便方法。被骚扰的人宁愿更改其用户名,因为这将立即使您缓期。骚扰他人的人想通过最初的防御来改变它。另一个因素是,运动的零件越多,意味着要撞到的东西越多,安全性就越低。您是在致力于防止诈骗者,还是在试图使环境尽可能安全?请记住,建立一个安全的环境可能意味着不自动进行更改,并且还有其他更改用户名的原因,无论好坏。您可以根据自己对网站的了解来确定。第二步是确定您是否可以对此进行安全植入。
这是流程图。宁愿自动化,但不能安全地做到这一点?不要这样对诈骗者和其他社会工程攻击有疑问吗?不要这样是否想使更改变得更容易并且可以安全地实施?照做吧。用户名可用性检查整个站点上的最后三个左右用户名将非常有用(以及其他一些确保安全的方法)。最后,您提到了可伸缩性。随着规模的扩大,出于安全原因,您可能会更容易(更便宜)自动执行您可能无法做的事情,并以另一种方式防御攻击,请参阅Twitter的示例。如果您达到了这一点,那么它就会自动消失,越快越好。
评论
如果您希望使其自动化,但希望限制滥用,并且您的站点具有某种“业力”系统,则可以选择仅允许X业力或更高的用户更改名称,甚至可能需要花费一定的业力进行更改。这样,欺负者之类的人(可能会被低估)无法轻易更改其名字以逃避防御,即使由于改变的业力打击,他们也无法定期做到这一点,但是寻求缓刑或因其他原因而改变,应该有足够的业力能够转换。
– Doktor J
17年12月21日在15:29
#8 楼
以我的经验,允许在最初没有计划的用户名位置进行更改会使审核/日志记录变得有些困难,尤其是在不可避免的情况下,几年前开发人员决定在每个日志条目中添加用户名而不是主键。发生这种情况,尤其是当您雇用业余/外包开发人员时-如果日志条目未映射用户名,则日志将变成垃圾,您必须通过手动交叉引用日期进行取证重建
因此,在启用此功能之前,我建议您查看可能拥有的所有日志记录解决方案,并确保它们将pk记录在旁边/而不是用户名,因此您可以跟踪用户名更改时的身份。
#9 楼
在我看来,这更多是策略或体系结构的问题,而不是安全性的问题……只要您确保为每个用户保留一个内部唯一的标识符(例如,数据库唯一ID,它永远不会改变,但是不会改变) (无需显示在任何地方),以及每个用户的修改历史记录,则用户应该能够修改其登录名或用户名。如果要在用户页面上显示修改历史记录,取决于您的软件的用途和使用情况。我个人总是觉得很讨厌那些施加了这种任意限制的服务(“无法更改您的用户名”,“您无法更改登录名”,“您无法重新使用过去使用过的密码”等)。
尽管如此,我们可以在3个之间有所作为案例(加上一般案例):
脱机软件
企业内部网服务
互联网服务
摘要
1-脱机软件
对于完全脱机的软件,用户应始终能够更改其登录名。这里的一切都是本地的,因此没有理由禁止任何更改。
2-Intranet服务
对于Intranet服务,我们很可能希望用户可以通过一种简单的方法直接与管理员联系。
那么更改登录名的最安全方法可能就是手动操作。不过,也许还可以确保一种安全的方法来自动执行该过程。
但是,恕我直言,用户应该能够修改其登录名,并且登录名应完全独立于用户的唯一ID。
3-互联网服务
对于在线服务,我认为登录名应该始终是用户的电子邮件地址(或者在某些情况下,可能是手机电话号码,但是,一旦它是一项互联网服务,我希望我的用户拥有一个电子邮件地址,并且不建议使用电话号码。)
在这种情况下,可以肯定的是,用户应该可以随时随地修改其电子邮件地址,因此可以更改其登录名(即其电子邮件地址)。
在这种情况下,您当然应该确保有适当的程序,以确保在发生修改请求时,有一种机制可以确认请求者是帐户所有者(带有确认链接的验证电子邮件具有到期日期,例如24小时,这取决于您的情况。
4-摘要
用户应始终能够修改其登录名
用户的唯一ID应始终独立从登录
(如果是Internet服务),请避免“用户名登录”,而最好是“电子邮件地址登录”,并带有验证/确认过程
,在任何情况下,保持跟踪都是一个好主意修改历史记录的历史记录……是否将其显示在“用户个人资料”上取决于您的特定用例
#10 楼
我没有看到回答最重要的问题的答案:用户名是否在您的网站上是机密?页面,或者作为论坛帖子的作者,或者可以在成员列表中搜索,因此不具有安全功能。因此,更改或不更改安全性没有意义。
如果用户名是机密,例如您可以使用其他显示名称,也可以显示用户的全名,但使用短名称或别名进行登录-如果用户名是机密信息,则它会影响安全性,因为攻击者需要知道用户名和密码才能访问帐户。
但是,由于用户倾向于重用用户名,并且通常不像使用密码那样将用户名视为秘密,因此用户名是一个弱秘密。在许多攻击(MtM,键盘记录程序,网络钓鱼,数据库黑客等)中,一点也不重要
因此,即使您的用户名是机密信息,可用性优势(其他方面也有概述)好的答案)远远超过了安全考虑。
#11 楼
如果您允许用户使用电子邮件地址作为登录名,则必须允许他们更改其登录名:如果有人离开了组织,他们很可能会立即失去对该地址和新地址的访问权限可能会尽快分配给其他人。 (当他们意识到他们毕竟无法连接到我的新房子时,我不得不在没有通知的情况下更改ISP;该电子邮件地址在同一天对其他人可用)。即使您仅使用该地址作为登录名,而不使用实际的电子邮件,对于社会工程攻击也是一个重要且不必要的媒介。旧的地址令人困惑,用户体验不好,会导致支持电话。
#12 楼
我们需要研究一些可能的选项:用户为什么要更改其用户名?
-个性化
-他们有缠扰者
为什么要用户更改用户名?
-多功能性/个性化带来了忠实的客户
为什么用户不希望其他用户更改用户名?
-OG时髦的借口“我是第一个Soccerkid96,不可能有其他人了”
-我真的想不出任何其他原因
为什么您不希望用户更改用户名?
-一种身份欺诈?多个以xXP0rn $ L @ yerXx命名的钓鱼帐户,得分最高的世界纪录保持者
-可以用作信息的后门,也可以用作数据库过载或DDoSing的漏洞
,以避免最不需要的问题,我建议为所有帐户(与公共帐户名称无关)建议一个唯一的静态标识符,为用户名更改付费,每5000年更改1个用户名,等等。
#13 楼
有很多支持和反对的观点。例如,用户可能想要更改名称以避免被识别,因为他注意到,从站点A搜索用户名显示了其在站点B上的个人资料。
另一方面,有一点是不允许更改它,因此人们可以在您的站点上再次识别他。想想一个拥有知名巨魔的论坛。人们知道如何处理他,并且不给他注意。直到他更改昵称。当然,这并不是真正的保护,因为他可以注册另一个用户名,但是通过为每个帖子更改名称来避免滥用。
如果昵称是某种主键,则您不允许更改。考虑一个电子邮件地址或一个jabber ID。某些站点仍然允许您更改名称,因此需要小心。如果考虑更改Twitter昵称,则最好在以后注册旧名称,以避免与新用户相关联。这也是锁定用户名以便在帐户删除后将来使用的要点。
用户名是登录过程的一部分,因此更改用户名可能会阻止暴力攻击。甚至在攻击者不知道密码是否错误或整个用户都不存在的情况下,都取决于站点。
最后,我认为用户名应该是唯一的,并且可能不可更改和锁定删除帐户后,但您应该提供一种定义显示名称的方法,该显示名称比帐户句柄更为突出。 。人们需要在他们的联系人列表中使用显示名称,因为谁会记住他朋友的所有UIN?最后,您的决定不一定要是最终决定。您可以随时更改为其他模型。使固定的用户名可更改应该没什么大不了的,修复可更改的用户名可能需要为您的用户提供一些解释。
评论
有趣的问题。我认为您不需要禁止它来保护自己免受用户侵害,但是您可能希望限制它以保护用户彼此免受伤害。如果您试图在网站上欺骗他人,更改用户名可能会有所帮助。游戏市场Steam上有很多人这样做。诈骗者会更改其用户名和图片,以假装自己是您认识的人,并要求您将商品交易给他们。 Steam具有一项功能,可让您查看每个用户最近使用的名称,这是用户防止自己被此类技巧欺骗的一种方法。您还可以显示一些详细信息,例如他们与用户成为朋友的时间或上次更改用户名的时间,以防止此类欺诈。
Stack Exchange网站不仅使您可以更改用户名,而且甚至不必唯一。
@Michael很好,不是吗?
这个问题标有“凭据” @Michael,因此我不认为它仅与显示名称有关。你们两个迈克尔一家都不使用相同的“用户名”对SE进行身份验证。