首頁  >  問答  >  主體

php - 如何判断一个字符串是随机生成的而不是手写的?

最近在处理一个问题的时候发现,有不少用户使用了发贴机或注册机来进行恶意注册。 这些用户混淆在正常用户中间,cookie,ip均为伪造,没有更好的特征。

经过观察,发现这些用户名一般都是随机生成,长度近似,但不知道是否有什么好的算法来识别一个字符串是否是随机生成的?

求解。

黄舟黄舟2749 天前495

全部回覆(9)我來回復

  • 天蓬老师

    天蓬老师2017-04-10 14:30:53

    你要解决的问题是:「如何防止恶意注册?」

    1、无法判断一个字符串是否为随机。因为现在随机只是一个物理概念,而无法用数学的语言来定义。

    2、防止恶意注册用的最多的办法就是验证码

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-10 14:30:53

    是啊别去考虑怎么验证是否随机了,基于既有算法作判断的话人家换一个算法不同的注册机你就判断不了了……

    还是想想如何在注册时增加必须手工操作无法AI代替的步骤吧……

    回覆
    0
  • 怪我咯

    怪我咯2017-04-10 14:30:53

    為何ip可以偽造?! server判斷是不是要改一下

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-10 14:30:53

    强制手机验证吧

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-10 14:30:53

    你需要做人机识别,考虑以下几个方向吧:

    1. 验证码
    2. Tokens ( cookie )
    3. 建立强大的语料库匹配你希望获得的输入?

    但实际可能操作和效果最好的都是第一个。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-10 14:30:53

    注册时加个验证码
    需要验证邮箱才能发言
    基本上可以拦截大部分注册机...
    不需要考虑是否随机,也没有考虑的必要

    回覆
    0
  • 高洛峰

    高洛峰2017-04-10 14:30:53

    手机短信验证,同一手机号不能重复注册 —— 这是釜底抽薪的方法。

    随机生成一个串,我抄写一遍,怎么能有牛算法可以分辨出来,随机算法也不是没有生成有意义字串的可能性,所以你的问题本身是无解的。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-10 14:30:53

    1、我就叫j3c1ob2又怎样那些做安全的名字都诡异的要死。
    2、为什么不用更唯一的方式验证例如手机号注册呀,微信注册呀
    3、现在注册机好多,通过采集注册机略过的网站整理出来一个库,为人类做贡献。。

    回覆
    0
  • PHPz

    PHPz2017-04-10 14:30:53

    记得当年批量注册游戏账号,名字是从百度贴吧里面采集回来的,单从名字上,是无法防御的吧。看看现在主流的防御方法有什么吧,比如验证码、手机验证、访问频率等等。

    回覆
    0
  • 取消回覆