问题概述
应用系统需要判断输入的数据来自真实的人而不是计算机程序。
示例
用途
网站,其特点是能让游客进行评论、注册成为用户或积极发表言论,但网站常被恶意程序攻击(PS:原文是spam-robots,感觉翻译成垃圾邮件机器人不合适)。恶意程序在网站中发表的内容堪比垃圾邮件,其主要目的是散播某些网站的链接地址,以提高这些网站在搜索引擎(例如google)上的搜索评级。恶意程序发布的垃圾信息与网站主旨毫无关系,因此网站需要辨别垃圾信息。
为了避免恶意程序发布垃圾信息,引入了验证码技术。验证码技术的主旨是采取方法来区分真实的人和计算机程序。
- 用于当网站遭遇恶意程序在其中发布垃圾信息时;
- 用于保护网站免受恶意程序骚扰;
- 用于不需要登录网站和注册用户就可以发表信息的情景。
解决方案
验证码的主要形式是包含字符和数字的图片,该图片被放在网页上的独立区域,然后用户在另外一个区域中输入图片中的内容。为防止恶意程序采用文字识别技术读取图片中的内容,对识别码图片进行多种方式的处理,使得恶意程序难以识别而真实的人可以识别。
如果用户成功输入图像中的内容,则将其编辑的内容提交到网站中,否则不允许提交操作。通常允许多次输入验证码图片中的内容,因为采用高级图像处理技术对验证码图片进行处理后,即使是真实的人也不容易读出处理过的验证码图片中的内容。
说明
验证码(Captchas)是Completely Automated Public Turing test to tell Computers and Humans Apart的简称。验证码的主要目的是通过采用计算机程序无法执行的操作来区分真实的人和计算机程序。验证码其实就是一个简单的图灵测试。
使文字识别程序无法识别验证码,使真实的人仍然可以读出验证码中的内容,这两者之间有一个的先后顺序,首先要满足后者。采用验证码技术保护网站还存在其它问题,例如无法让视障用户通过语音软件读出验证码中的内容。
防止恶意程序的其它方式有询问“2+3等于几?”或“二加三等于几?”,也可以采用语音验证码(PS:播放一段语音让用户输入其中的内容)。