Javascript Captcha

web*_*x l 0 javascript forms validation captcha

我在网上发现了这个很棒的小代码但是在正确删除空格之后它似乎没有比较两个字符串?我知道一些js但是这里的任何错误都超出了我的理解范围.希望有人知道答案.

注意:它似乎也根据chs的数量而不是那些chs进行验证,数字似乎不需要匹配,只要有足够的数量.

组织代码由来自" http://osticket.com/forums/showthread.php?t=6489&highlight=captcha "的" mama21mama " 完成

我做了一些小的个人修改试图修复它,下面是我的vr.

<script type="text/javascript">
    function DrawCaptcha() {
        var a = Math.ceil(Math.random() * 9)+ '';
        var b = Math.ceil(Math.random() * 9)+ '';       
        var c = Math.ceil(Math.random() * 9)+ '';  
        var d = Math.ceil(Math.random() * 9)+ '';  
        var e = Math.ceil(Math.random() * 9)+ '';  
        var f = Math.ceil(Math.random() * 9)+ '';  
        var g = '10';  
        var code = a + ' ' + b + ' ' + ' ' + c + ' ' + d + ' ' + e + ' '+ f + ' ' + g;
        document.getElementById("txtCaptcha").value = code
    }
    function ValidCaptcha() { // valida los numeros ingresados
        var str1 = removeSpaces(document.getElementById('txtCaptcha').value);
        var str2 = removeSpaces(document.getElementById('txtInput').value);
        if (str1 == str2){
            return true; } 
        else {
            return false; } 
    }
    function removeSpaces(string) { 
        return string.split(' ').join('');
    } 
    </script>
Run Code Online (Sandbox Code Playgroud)

jos*_*736 9

不要使用此代码. 它无助于提高安全性.

为了使验证有效,验证的答案必须是仅由服务器知道秘密. 客户端脚本无法实现验证码,因为客户端代码必然知道答案.

此脚本不会保护您的服务器免受恶意攻击.世界上所有的JavaScript都不能阻止攻击者将POST伪造的脚本写入您的服务器.由于验证码验证发生在客户端上,因此您的服务器对于请求是否由人类合法生成一无所知.

这个验证码也通过将挑战呈现为纯文本而忽略了这一点.任何脚本都可以从DOM中读取挑战并提供正确的答案.

如果浏览器禁用了JavaScript,则此脚本无效.如果我ValidCaptcha = function() { return true; }在控制台中输入,则此脚本无效.

使用reCAPTCHA而不是尝试自己滚动.它是免费的,有一个简单的API,并为盲人用户提供内置的住宿.