怎样防止别有用心的人注册跟其他用户不易分辨的用户名?

By ivanilla at 2017-02-13 • 0人收藏 • 1960人看过

比如0和O,1和I或者l,5和S,Z和2等, 另外包括但不限于使用希腊字母,西里尔字母,俄文字母或者其他拉丁系语言的字母来高仿英文字母的,以及使用中日汉字里面看起来差异非常小的汉字(也可以使用差别不大的简繁体中文汉字在)作为高仿用户名。

除了通常使用的替换这些字母之外,有没有更好的方法?

16 个回复 | 最后更新于 2017-02-23
2017-02-13   #1

你可以用字体库把用户输入的用户名转换成图片,再用OCR识别,跟现有数据库对比。

2017-02-13   #2

回复#1 @lincanbin :

其实我昨天已经问过了,也有人提出类似方法(但不是用OCR,因为复杂而且准确率无法保证)既然你也提到了这个方法,那我就把链接发出来:https://segmentfault.com/q/1010000008322029

2017-02-13   #3

回复#2 @ivanilla :

这个确实也是个可行的好办法。

2017-02-13   #4

回复#3 @lincanbin :

现在问题就是怎样获取可能会被高仿的ID了,感觉就跟搜索一样。 如果被替换的字母或者汉字只有一两个应该没问题,但万一有人使用全用非英文的字母代替英文字母的高仿ID可能都搜不到

2017-02-13   #5

回复#4 @ivanilla :

正则限制字符集,英文字母、数字、下划线、横杠、纯中文。

2017-02-14   #6

回复#5 @lincanbin :

这样倒也简单了,我之前写过这样的正则(还支持日文),我找一下。

2017-02-14   #7

回复#6 @ivanilla :

preg_match('/^[a-zA-Z0-9\x80-\xff\-_]{4,20}$/i', $string)
2017-02-14   #8

回复#7 @lincanbin :

谢谢了,顺便问一下较强密码的正则,我找到这个:https://www.zhihu.com/question/29615770

但不知用哪个比较好。

2017-02-14   #9

回复#8 @ivanilla :

看自己需求了。

2017-02-14   #10

回复#5 @lincanbin :

不过只用正则还是防不了使用相似度很高的字母和数字来高仿的情况。 即使只允许中文汉字,也无法阻止使用简繁中文的不同来高仿的情况(其实可以把繁体转换成简体再注册,但这样不太好)

2017-02-14   #11

回复#10 @ivanilla :

道高一尺魔高一丈,这个方面不需要太尽力。

2017-02-19   #12

回复#9 @lincanbin :

最后我用了这个:https://github.com/schuppo/PasswordStrengthPackage

这样能方便地设置想要的密码强度。

2017-02-19   #13

回复#12 @ivanilla :

GitHub上真是什么都有啊。

2017-02-20   #14

回复#13 @lincanbin :

我是在Google时看到Stack Overflow上面有人推荐的。

2017-02-20   #15

Stack Overflow真是什么都有啊。

2017-02-23   #16

看看不错

登录后方可回帖

登 录
信息栏

Carbon Forum是一个基于话题的高性能轻型PHP论坛

下载地址:Carbon Forum v5.9.0
QQ群:12607708(QQ我不常上)

donate

手机支付宝扫描上方二维码可向本项目捐款

粤公网安备 44030602003677号
粤ICP备17135490号-1

Loading...