繁体   English   中英

JavaScript验证码

[英]Javascript 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>

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

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

该脚本无法保护服务器免受恶意攻击。 世界上所有的JavaScript都不能阻止攻击者编写将伪造形式的POST到您的服务器的脚本。 由于验证码验证是在客户端进行的,因此您的服务器无法确定请求是否由人合法产生。

该验证码还通过将挑战呈现为纯文本形式而错过了重点。 任何脚本都可以从DOM读取挑战并提供正确答案。

如果浏览器禁用了JavaScript,则此脚本无用。 如果我输入ValidCaptcha = function() { return true; } ValidCaptcha = function() { return true; }

与其尝试自己动手, 不如使用reCAPTCHA 它是免费的,具有简单的API,并且为盲人用户提供了内置的住宿。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM