我用的一个比较有效的、不用验证码的防灌水机程序

作者:leen 来源:ITPOW(原创) 日期:2009-2-13

首先,我也承认,目前来说,一款优秀的验证码是最好的防灌水机程序。

但是,验证码要真正防住灌水机,有一点遗憾,就是验证码要比较畸形,搞得人都比较难辨别。

我这里说的这个防灌水机程序,对防目前的灌水机来说,还是比较有效的。我做过实验:在一个饱受灌水的应用程序上,原来每天数万条垃圾信息,而且这个程序还是用了验证码的;使用我的这个程序后,每天只有二三十条信息了,而且这些信息都不是垃圾信息。

过程是这样的:

  • 获取客户端提交的信息;
  • 将信息存入 Session;
  • 生成一个随机数(称为 ticket);
  • 将随机数也存入 Session;
  • 用 JavaScript 的形式将随机数以链接的形式输出,并提示客户点击上一步生成的链接;
    document.write("<a href="process.asp?ticket=<%=ticket%>">点击确认添加</a>");
  • 客户点击链接,随机数又被发送回服务器端;
  • 服务器端验证发送回来的随机数与 Session 中的随机数是否相同;
  • 若相同,将信息从 Session 中取出来存入数据库,完成。

原理是这样的:

  • 一些灌水机程序只管提交,不管结果,导致没有进行提交确认;
  • 一些灌水机不支持 JavaScript,导致无法获知 ticket;
  • 一些灌水机不支持 Session,导致无法成功确认 ticket;

我觉得防灌水机就是一场长期的战役,今天这个胜,明天那个胜,我也不说我的这个程序就是一劳永逸的。我觉得今后可以多多加强,比如:产生多个伪造链接,但通过 CSS 把伪造的链接隐藏了,灌水机要去分析哪个链接是有效的,又要复杂一些了。

 

相关文章