返回首页

简介
这个特殊的文章可以帮助你在实施网页/网站的验证码或在应用程序。帮助您理解和逻辑的完全客户端CAPTCHA implentation。
大多数网站使用的CAPTCHA技术审定/核查的目的,每当有人试图完成的成员或要提交的资料片。 CAPTCHA代以不同的方式可以做到。我们可以使用服务器端脚本,甚至我们可以使用客户端脚本。背景
在大多数情况下有时它会发生,我们需要有一些额外的资源/ DLL的托管服务器上注册,为了贯彻落实CAPTCHA基本上这种情况我已经实现在服务器端scripting.Here的情况下纯粹的客户端上使用JavaScript端的验证码功能。使用代码
生成验证码使用客户端脚本是相当简单,但请确保启用JavaScript。雅天几乎所有的浏览器支持的JavaScript。不管怎么说允许对代码的细节举动。源代码是相当简单和直接的forwad。只需复制并粘贴在下面空白的HTML页面的代码,并保存为任何你喜欢的的东西。下载/复制的图像,并放在同一文件夹下,或在同一位置创建的HTML文件。源代码

<html>

<head>

<title>Captcha</title>

    

    <script type="text/javascript">





   //Created / Generates the captcha function    

    function DrawCaptcha()

    {

        var a = Math.ceil(Math.random() * 10)+ '';

        var b = Math.ceil(Math.random() * 10)+ '';       

        var c = Math.ceil(Math.random() * 10)+ '';  

        var d = Math.ceil(Math.random() * 10)+ '';  

        var e = Math.ceil(Math.random() * 10)+ '';  

        var f = Math.ceil(Math.random() * 10)+ '';  

        var g = Math.ceil(Math.random() * 10)+ '';  

        var code = a + ' ' + b + ' ' + ' ' + c + ' ' + d + ' ' + e + ' '+ f + ' ' + g;

        document.getElementById("txtCaptcha").value = code

    }



    // Validate the Entered input aganist the generated security code function   

    function ValidCaptcha(){

        var str1 = removeSpaces(document.getElementById('txtCaptcha').value);

        var str2 = removeSpaces(document.getElementById('txtInput').value);

        if (str1 == str2) return true;        

        return false;

        

    }



    // Remove the spaces from the entered and generated code

    function removeSpaces(string)

    {

        return string.split(' ').join('');

    }

    

 

    </script>

    

    

    

</head>

<body onload="DrawCaptcha();">

<table>

<tr>

    <td>

        Welcome To Captcha<br />

    </td>

</tr>

<tr>

    <td>

        <input type="text" id="txtCaptcha" 

            style="background-image:url(1.jpg); text-align:center; border:none;

            font-weight:bold; font-family:Modern" />

        <input type="button" id="btnrefresh" value="Refresh" onclick="DrawCaptcha();" />

    </td>

</tr>

<tr>

    <td>

        <input type="text" id="txtInput"/>    

    </td>

</tr>

<tr>

    <td>

        <input id="Button1" type="button" value="Check" onclick="alert(ValidCaptcha());"/>

    </td>

</tr>

</table>

</body>

</html>
它是如何工作... ...LT;输入ID ="Button1quot;类型= quot; buttonquo​​t;值= quot; Checkquot的onclick = quot;警报(ValidCaptcha());"/ GT;
的onclick事件的按钮,我们调用ValidCaptcha()方法。它返回一个布尔值,即真/假轮流。
ValidCaptcha()方法比较,在文本框中aganist绘制或显示的代码在验证码框输入的代码。 RemoveSpaces(String)方法repoves发生任何空格内以及进入代码。所有的字符串进行比较后删除任何空格。
结果显示为"真"或"假"的返回值前缘ValidCaptcha。您可以自定义任何用户友好的消息,而不是真或假的返回值。LT;输入类型="buttonquo​​t; ID = quot; btnrefreshquot;值= quot; Refreshquot的onclick = quot; DrawCaptcha();"/ GT;
DrawCaptcha()方法被调用时在屏幕上绘制一个CAPTCHA。单击刷新按钮,我们可以生成/绘制新的captcha图像。LT;身体的onload ="DrawCaptcha();"GT;
在我的身体负荷DrawCaptcha()方法,使页面加载时默认CAPTCHA应当制定。
在这里,我们走,保存的HTML页面,并在Web浏览器(IE / FF等)中打开。跑马编码........:)

回答

评论会员:SAKryukov 时间:2012/01/25
谁在乎?如果文章写得好不好,如果它的价值是负
是的,而不是很少或为零,但略有下降:想象一个天真的开发者将使用这种技术 - 该网站可以在任何时候欺骗。

谢尔盖一个Kryukov
评论会员:morsanu 时间:2012/01/25
对不起,伙计,但这不是一个CAPTCHA
评论会员:。SmirkinGherkin 时间:2012/01/25
非常差的CAPTCHA可以通过自动化完成。不应该做也只依靠安全的客户端脚本,因为它可以很容易被欺骗或绕过

例如运行脚本的document.getElementById('Button1的')的onclick =函数(){警报(TRUE);};将删除调用验证函数
评论会员:kaschimer 时间:2012/01/25
这是一个不错的主意。。然而,这不是验证码。它只是看起来像验证码。在此执行,任何人都可以轻松地复制在txtCaptcha框中正在使用的文本,并粘贴到txtInput框。

因为你的执行是在JavaScript中,将攻击者可以很容易地发现你的算法生成CAPTCHA(即使它是随机数)。

这是一个良好的开端,虽然。

"那些说的任务是不可能的,不应该中断正在做的。" - 中国谚语
评论会员:jimbobmcgee 时间:2012/01/25
我讨厌这样说,但本文在技术上是非常差。你有没有考虑,需要摆在首位一个CAPTCHA的基本原因,即,防止提交表单自动化系统

你的方法的问题是,这是很容易折断。通常与一个CAPTCHA图像的随机噪声是使计算机程序真的很难使用生成的图像上的字符识别算法

在你的方法,字符识别甚至不要求,因为可接受的值是存储在一个文本框。这些都是很容易复制/粘贴,或通过JavaScript读取。

考虑下面的字符串,粘贴到地址栏:

{C}
CAPTCHA是为你填充。

我投票您为本文,因为我认为它写得很好,但我不会推荐,任何人使用您所提出的技术。

J.
评论会员:jimbobmcgee 时间:2012/01/25
。写得很好,但在技术上差