在我决定为我的登录系统使用用户名之后,我关注的是人们总能知道哪些用户名已经注册。 我在登录表单中使用了用户名,因此它们仍然必须是唯一的,但是我可以避免/降低人们知道正在使用哪些用户名的风险吗?
当他们知道查询的一半时,它会使bruteforcing帐户更容易。
在我当前的系统上,当用户尝试使用已经在使用的用户名注册时,会收到一条错误消息,告知他们该用户名已经存在。
我不想对新帐户使用电子邮件验证。
我的担心只是暴力行为。这是我需要的答案。 我已经通过正则表达式强制使用强密码,因此主要问题是: 我是否必须强制使用随机生成的用户名才能获得更好的安全性并保护我的用户'隐私吗
我正在使用PHP 7和PDO。
答案 0 :(得分:3)
一种解决方案是强制用户选择系统认可的用户名。例如,如果用户必须输入他们作为用户名种子的兴趣,那么您可以巧妙地回避问题。
用户:"小狗"和#34;蝴蝶"。 系统:你想使用"很多小狗"或者"小狗蝴蝶"作为您的登录名?
我不会声称这并不烦人,但它很有效,您可以始终允许用户设置公开可见的别名,或者默认使用通用名称,就像堆栈溢出一样。这将掩盖实际的名字,并带来令人困惑和讨厌的暴力攻击者的奖励。
编辑:如果您不强制使用用户名,则可以采用常用的Oauth2-or-email-as-username方法。这可能会稍微不那么安全,因为人们的电子邮件地址通常很容易或确定。
答案 1 :(得分:2)
只是一个想法:如果用户名需要超级秘密。当用户注册时,您可以生成随机GUID作为用户名。
这可能有点矫枉过正,但它会让用户名几乎无法猜测或蛮力。
副作用是用户可能很难记住他们的用户名。