2015-09-15 83 views
-1

在我决定使用用户名登录系统后,我担心人们总是可以知道哪些用户名已被注册。 我在登录表单中使用用户名,因此它们仍然必须是唯一的,但我可以避免/减少人们知道哪些用户名正在使用的风险吗?如何保持用户名密码

当他们知道一半的查询时,它将使bruteforcing帐户更容易。

在我当前的系统上,当用户尝试使用已经在使用的用户名进行注册时,他们会收到一条错误消息,告诉他们该用户名已存在。

我不希望为新帐户使用电子邮件验证。

我的担心只是暴力。这是我需要的答案。 我已经强制通过正则表达式强密码,所以主要问题是: 我是否必须强制随机生成的用户名,以获得更好的安全性和保护我的用户的隐私?

我正在使用PHP 7和PDO。

+5

你到底如何告诉人们选择不同的用户名? “哎呀,对不起,这是行不通的”,无缘无故地让你的系统显得很愚蠢。如果您担心暴力攻击,那么您的登录系统应该能够检测到企图并将其锁定。这与揭示用户名的存在无关。 –

+2

因此,您希望用户选择用户名,但在存在时得到通知,但不让他知道它存在?没有意义。出于安全原因,密码被发明出来。如果你仍然想要秘密唯一的用户名,你将不得不生成它们,而不是让用户选择它们。 –

+0

@Dagon这将是如此,直到第一次尝试注册(测量)它:) –

回答

3

一个解决方案是强制用户选择由系统认可的用户名。例如,如果用户必须输入他们的兴趣作为用户名的种子,则可以整齐地回避该问题。

用户:“小狗”和“蝴蝶”。 系统:你想使用“小狗”还是“小狗 - 蝴蝶”作为你的登录名?

我不会声称这不是烦人的,但它是有效的,并且您可以随时允许公开可查看的别名由用户设置或默认为通用名称,就像堆栈溢出一样。这将隐藏实际的名字,并带来混乱和恼人的暴力攻击者的奖金。

编辑:如果你不强迫用户名,你可以简单地采用常见的Oauth2或电子邮件作为用户名的方法。这可能会稍微不安全,因为人们的电子邮件地址通常很容易确定。

+1

即时将我的S.O用户名更改为“小狗蝴蝶”,谢谢 –

+0

“海盗忍者”即将流行...... –

+0

这就像色情游戏名称 –

2

只是一个想法:如果用户名需要超级保密。当用户注册时,您可以生成随机GUID作为用户名。

这可能有点矫枉过正,但它会使用户名几乎不可能猜到或蛮力。

副作用是用户可能难以记住他们的用户名。

+0

这是我以前的主题中的原创想法。使用UUID或任何其他长字符串对于常规用户来说是一种矫枉过正,我不想为了安全而牺牲太多。但感谢这个主意! –