如何清理URL中的用户名

时间:2011-08-11 21:39:20

标签: python regex

什么是用户名的优秀正则表达式过滤器? [A-Za-z0-9 ]好的,还是太不灵活了?我还应该寻找其他什么? (修剪空格?)

3 个答案:

答案 0 :(得分:3)

在网址中使用用户名时,只需encode用户名。

答案 1 :(得分:2)

对于联合国人来说这很好,但您可能希望让他们使用-_%@.。 (基本上,[a-zA-Z0-9._%+-])。许多人会喜欢使用他们的电子邮件获取用户名,其中99%以上的用户名都是如此。在安全性较低的情况下,我说let'em。

答案 2 :(得分:1)

您对原始答案的评论是真正的“问题”。使用base64或其他任何内容编码用户名很简单,但如果您允许用户选择任意unicode用户名,他们可以轻松模仿其他人。

基本思想是,unicode有许多字符,虽然看起来相同,但编码方式不同。有关homograph attacks的详细说明,请参见此处。不知道是否有任何库可以合理地处理这个问题,但是如果你想要一个简单的正则表达式解决方案,你真的应该坚持一些有限的字符范围