不使用图片的验证码方式

snap0016_captcha

验证码是防止被机器人恶意灌水的一个方法,产生一个只有服务器才知道的信息(例如一个单词、数字等),在客户端浏览器中以机器人不能分析的方式(通常是图片)出现,作为判断机器人和真人的一个依据。一般是在服务器端生成图片,由用户在文本框输入看到的文字。

使用生成图片方案的缺点在于:

  1. 在服务器端生成图片比较耗费资源。虽然有一些优化的办法,例如先一次性生成一批图片,然后缓存,用户看到的图片其实不是实时产生的,但这个方案存在被破解的风险,生成时也需要占用一些资源。(如果是测试服务器先生成,迁移到生产服务器,虽然不占资源,但是系统却复杂了)
  2. 理论上来说,机器人很难辨认的文字,用户也很难辨认,这个方法在安全性和易用性之间存在矛盾。

Kevin LE 提出了两个不需要生成图片的验证码方法演示): read more…