【发布时间】:2014-11-29 11:32:24
【问题描述】:
假设我希望用户名仅由字母和数字组成,而与语言无关。
我想我可以使用以下正则表达式部分来完成此操作
(?>\p{L}[\p{Mn}\p{Mc}]*) //match any letter, including those consisting of two code points
\p{Nd} //match any digit
现在我遇到的问题是,用户可能会通过使用与其他用户的用户名相同的用户名来伪装成其他用户(同形词攻击)。 admin vs admin 就是一个例子。
我想不可能使用正则表达式轻松排除既是字母又是易混淆的字符,但是在正则表达式的上下文之外呢?混淆物的 unicode id 是否位于我们可以过滤或类似的范围内?
【问题讨论】:
-
有这个功能的库;他们在大表中收集同形异义词并将它们编译成一个正则表达式。
-
有趣,我想我必须搜索它们。
标签: regex string unicode homoglyph