什么是用户名的优秀正则表达式过滤器? [A-Za-z0-9 ]
好的,还是太不灵活了?我还应该寻找其他什么? (修剪空格?)
答案 0 :(得分:3)
在网址中使用用户名时,只需encode用户名。
答案 1 :(得分:2)
对于联合国人来说这很好,但您可能希望让他们使用-
,_
,%
,@
和.
。 (基本上,[a-zA-Z0-9._%+-]
)。许多人会喜欢使用他们的电子邮件获取用户名,其中99%以上的用户名都是如此。在安全性较低的情况下,我说let'em。
答案 2 :(得分:1)
您对原始答案的评论是真正的“问题”。使用base64或其他任何内容编码用户名很简单,但如果您允许用户选择任意unicode用户名,他们可以轻松模仿其他人。
基本思想是,unicode有许多字符,虽然看起来相同,但编码方式不同。有关homograph attacks的详细说明,请参见此处。不知道是否有任何库可以合理地处理这个问题,但是如果你想要一个简单的正则表达式解决方案,你真的应该坚持一些有限的字符范围