日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php h5用户信息,【php】PHP怎样防止用户注册高仿其他人的用户名?

發布時間:2025/3/20 php 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php h5用户信息,【php】PHP怎样防止用户注册高仿其他人的用户名? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在PHP網站中,怎樣防止別有用心的人注冊跟其他用戶不易分辨的用戶名?

比如0和O,1和I或者l,5和S,Z和2等,

另外包括但不限于使用希臘字母,西里爾字母,俄文字母或者其他拉丁系語言的字母來高仿英文字母的,以及使用中日漢字里面看起來差異非常小的漢字(也可以使用差別不大的簡繁體中文漢字在)作為高仿用戶名。

怎樣才能盡量避免這種情況發生?

回答

我這里有一個 ·真· 防偽造用戶名方案。

那就是用GD繪圖畫出兩個用戶名,然后用圖片相似度算法算出匹配度。就知道是不是仿冒他人了。

我感冒了 vs 娃娃脾氣

娃娃脾氣 vs 哇哇脾氣

shellus vs she11us

然后取出黑色部分的像素數量,即可得到兩個文本的相似度了

/**

* Created by PhpStorm.

* User: shellus

* Date: 2017-02-12

* Time: 19:34

*/

require 'vendor/autoload.php';

use Intervention\Image\ImageManager;

// create an image manager instance with favored driver

$manager = new ImageManager(array('driver' => 'gd')); // imagick

// to finally create image instances

$img = $manager->canvas(800, 100, '#fff');

$img->text('蛙蛙脾氣', 0, 0, function(\Intervention\Image\AbstractFont $font) {

$font->file('src/fonts/msyhbd.ttc');

$font->size(100);

$font->color('#000');

$font->valign('top');

});

$img->text('娃娃脾氣', 0, 0, function(\Intervention\Image\AbstractFont $font) {

$font->file('src/fonts/msyhbd.ttc');

$font->size(100);

$font->color('#ff0');

$font->valign('top');

});

$img->save('bar.png');

這玩意兒,程序自動處理并不能完全解決問題,可以先用程序處理一遍,無法確定的就放入待定區進行人工審核。說一下我的思路:

如果用戶名包含別人的用戶名,比如原有abc,再注冊一個abc123,這個就要斃掉了;

檢測字符的編輯距離,php里面有個函數levenshtein可以看看;

其他特定相似字符的判斷,建一個黑名單。

首先應當創建相似字符的對應表,即0與o的一個全量集合,這一塊需要人工處理(可以使用更加高科技的手段,如果你會的話),然后創建用戶名時首先允許他創建,然后定時任務的分析包含這些相似字符的用戶進行匹配,然后封鎖帳號,并要求其聯系管理員解封

最初方案:

把用戶名作正規化處理,例如0和o等價,就把Hell0正規化成Hello,規則多復雜都可以(大小寫,vv轉w之類)。

把正規化后的名字保存起來以便下次注冊的時候判斷(放數據庫,Redis,實現個bloom filter都可以)

和 @娃娃脾氣 思路相似的是感知哈希,用DCT hash效果還可以,但還是要解決搜索問題。

把這兩個思路結合起來:

遍歷字符集合,用圖像相似性構造出字符的等價類(解決了規則構造的問題)

用戶注冊時根據等價類把用戶名正規化,保存到bloom filter供下次注冊判斷(解決搜索問題)

這樣避免感覺規則有點大,給id,昵稱可以隨意變

屏蔽這些字 不給注冊

好吧,說一下本屌的思路,畢竟心有多大,需求就有多大

您需要建立一張表來存取可能匹配到的字段名,然后寫一個字符匹配對照類,比如我Tom注冊的時候,然后我發現這個o可能被人利用啊,順帶把T0m這個昵稱放到新建的那個表上,同時綁定到新用戶的id上,當然我這個從表一般只是用戶注冊或者更改昵稱的時候查一下,有的話就提示這人注冊了啊,別整成這樣了?

你做的應該是論壇社區之類的吧 如果想防止用戶仿冒ID的情況發生不只是單單從用戶ID上來區分 應該從用戶頭像 用戶等級上也做出區分 一個完善的社區應該也包括這些 看看貼吧的也是允許高仿ID的 況且社區論壇都是弱關系社交 即使有高仿ID也不會出現什么情況 而且貼吧這么多用戶量都不考慮這個高仿ID 一些小的論壇用戶量更小 完全沒必要考慮這個

說一個防止使用其他拉丁語系字母高仿英文字母的好方法,那就是:

用正則表達式!

但對于使用相似度很高的字母高仿數字(或相反),以及使用中日漢字(如果正則允許的話)之間微小差異的特點來注冊的高仿ID無效。

這不是我的名字嗎?有人仿冒我?

總結

以上是生活随笔為你收集整理的php h5用户信息,【php】PHP怎样防止用户注册高仿其他人的用户名?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。