如何在javascript中验证验证码?

时间:2013-09-25 22:12:49

标签: javascript html validation

我正在创建一个包含验证码的表单。 验证码是图像,对吧?(如果我错了,请告诉我。) 如何知道用户输入了正确的验证码。 (这意味着如何在javascript中验证验证码,甚至需要检查用户是否输入了正确的情况。)或者可能在servlet中也可以。 这是我在html页面中的代码。

<html><body>
<script type="text/javascript"> 
function ValidateForm(frm) {
if (frm.CaptchaCode.value == "") {alert('Enter web form code.');frm.CaptchaCode.focus();return false;}  
return false;
}
function ReloadCaptchaImage(captchaImageId) {
var obj = document.getElementById(captchaImageId);
var src = obj.src;
var date = new Date();
var pos = src.indexOf('&rad=');
if (pos >= 0) { src = src.substr(0, pos); }
obj.src = src + '&rad=' + date.getTime();
return false; }
</script>
<i>Enter web form code*:</i>
<input id="CaptchaCode" name="CaptchaCode" type="text" style="width:80px; border:1px solid #999999;" maxlength="6" />
<a href="http://www.SnapHost.com"><img id="CaptchaImage" alt="Web Form Code" title="Anti-spam web forms"
style="margin-left:20px; border:1px solid #999999"
src="http://www.SnapHost.com/captcha/WebForm.aspx?id=HQWK4M77B9KH&ImgType=2" /></a>
<br /><a href="#" onclick="return ReloadCaptchaImage('CaptchaImage');">
<span style="font-size:12px;">reload image</span></a>
</body></html> 

1 个答案:

答案 0 :(得分:0)

嗯,你不能。它不能在客户端提供。否则,机器人也可以运行javascript - 你的工作也毫无意义。

但是,你可以做两件事:

AJAX请求

您可以将输入的代码发送到服务器,服务器将验证答案并发回“是”或“否”。
优点:

  • 容易
  • 您可以在每次尝试后重新生成代码

<强>缺点:

  • 花费一点带宽
  • 在延迟时,可能需要一段时间才能加载AJAX

Asymethric enctription

这是一个更脆弱,但更优雅的方法。通常,您所做的是使用验证码发送散列(例如md5,但我建议使用更强的算法)。如您所知,无法检索散列数据。因此,在javascript代码中,您需要对用户输入的代码进行哈希处理,并将其与您使用该页面发送的哈希值进行比较。

<强>优点:

  • 即时通知用户状态
  • 没有带宽问题

<强>缺点:

  • 您必须在客户端实现哈希函数
  • 无限次尝试验证相同的代码 - 这意味着打破验证密码会像打破实际的散列算法一样难(根本不用担心)