首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止注册页上的用户枚举

防止注册页上的用户枚举
EN

Security用户
提问于 2014-10-10 10:51:44
回答 4查看 11.6K关注 0票数 24

您有一个用户登录的网站,并且希望阻止用户枚举。

在登录页面和被遗忘的密码页面上,这可以通过仔细选择用户消息来实现,但是新的用户注册页面呢?您希望确保为现有用户创建帐户是不可能的,但这会告诉攻击者该帐户已经存在,允许枚举。

可以使用什么机制来防止新用户注册时的用户枚举?

EN

回答 4

Security用户

回答已采纳

发布于 2014-10-10 13:45:28

由于用户名是公共部分,如果可以枚举它,它并不是世界末日,但是如果你真的想避免这一点,最简单的事情是让他们使用电子邮件地址作为用户名。然后,你简单地说,你发送了一个链接到电子邮件,无论他们是否已经有一个帐户。

票数 22
EN

Security用户

发布于 2014-10-10 11:33:27

一种选择是使用captcha。用户名可以在提交后进行验证,如果用户名已经被使用,则会更新captcha。这至少应该减缓这一进程。

我认为还有其他选项,但它们是复杂的(例如,在提交复制用户后有指数时间返回页面)或可能使应用程序不可用(在X次尝试之后阻止用户)。

如果你用电子邮件作为用户名,那么第二个选项也没那么糟糕。

票数 5
EN

Security用户

发布于 2014-10-10 12:30:27

用户枚举并不是那么邪恶。用户名是公开的,密码是秘密的。例如,在这个页面上,我们都可以知道stackexchange上存在用户James_pic。搜索或编写简单的爬虫可以很容易地为攻击者提供大量的用户名,帮助缩小攻击范围,但其他安全措施仍然使得攻击者的任务非常困难。

想法是要有安全政策(至少是不成文的,记住),把公开的和秘密的事情分开,集中精力保护那些必须是秘密的东西。如果您想使用用户名作为“秘密的第二部分”,这可能是错误的,最好需要两倍长的密码,或者两个因素的身份验证,因为将用户名保密要困难得多。

如果出于某种原因,你也需要保密用户名(例如,你不想让任何人知道注册了多少用户),那么最好自己指定用户名(例如userNNNNN,或用户-<10随机letters>),或者使用带电子邮件或电话号码的学徒作为用户名。

票数 0
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/69370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档