我在数据写入数据库之前,用一段SQL语句记录了提交过来的数据,发现,网站本身的SESSION和表单提交过来的SESSION一样,注册页面有一个下拉的分类选项,总是同一个分类的ID,如下:ID  网站session  form提交session  IP       分类ID      时间
4  4e365           4e365            119.162.6.234  73  2011-05-27 09:07:35
3  94568           94568            123.5.224.21          73  2011-05-27 09:07:24
2  beb83           beb83            114.243.5.11          73  2011-05-27 09:06:08
1  CCB7H           CCB7H            116.238.198.188  73  2011-05-27 09:06:01而且还有一个最怪的,我捕捉到的分类DI是 73 ,但是写入到库里就是 47 了,这是怎么回事?

解决方案 »

  1.   

    可以获取一下请求者的IP,限制1个IP1天只能注册一次,当然碰见换IP的就没辙了。不过多少能好一点吧
      

  2.   

    这个很正常,CSDN上不也经常有10多条广告帖连成一排的吗。有些是防不胜防的。
      

  3.   

    发几个方法供参考,算是抛砖引玉了1. 按时间(比如小时)生成验证码输入框的name,如
    8:00-9:20时,验证码输入框name是verify_asd
    9:00-10:20,验证码输入框name是verify_fgh
    10:00-11:20,验证码输入框name是verify_jkl
    ....
    当然名字再变态一点会更好2. 注册form部分的html不要直接写在页面里,而是使用javascript拼接,如写成:
    var buff="<input ";
    buff += "name=verify_";
    buff += "asd valu";
    .....3. 注册表单form不要直接写到页面里,使用ajax加载4. 表单里加入一个没用的input,但通过css使其不可见,其value值留空。假设其name为address
      处理程序中,判断,如果POST传递中有address,报错,或不报错而停止执行。这一定是自动化的注册机填写进去的!5. 收集一些垃圾注册信息,从中提取关键词,如果注册信息中触犯了这些关键词,报错。关键词提取要慎重,很容易“误杀”
      

  4.   

    你的验证码太简单
    或许你可以按一定算法生成随机的验证码字段名
    你可以参考ems.com.cn网站的做法