首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript Captcha

Javascript Captcha
EN

Stack Overflow用户
提问于 2011-09-27 16:19:56
回答 1查看 6.4K关注 0票数 0

我在网上找到了这个很好的小代码,但是在正确删除空格后,它似乎没有比较这两个字符串?我知道一些js,但无论哪里出了问题,我都无法理解。希望有人能知道答案。

注意:它似乎也验证了基于chs的数量而不是那些chs是什么,这些数字似乎不需要匹配,只要有足够的数量。

Org代码由"mama21mama“中的"http://osticket.com/forums/showthread.php?t=6489&highlight=captcha”完成。

我做了一些小的个人修改试图修复它,下面是我的虚拟现实。

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-27 17:34:35

不使用此代码。不会增加安全性。

为了使captcha有效,对captcha的答案必须是服务器只知道的一个秘密。客户端脚本不能实现captcha,因为客户端代码必须知道答案。

此脚本无助于保护服务器免受恶意攻击。世界上所有的JavaScript都不会阻止攻击者编写脚本,说明POST是一个假表单给您的服务器。由于captcha验证发生在客户端上,因此您的服务器不知道请求是否由人合法地生成。

通过将挑战呈现为纯文本,这个captcha也忽略了要点。任何脚本都可以从DOM读取挑战并提供正确的答案。

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

不要尝试使用自己的版本,而是使用reCAPTCHA。它是免费的,有一个简单的API,并有内置的住宿为盲人用户。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7572395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档