【问题标题】:CAPTCHA validation with JavaScript使用 JavaScript 进行 CAPTCHA 验证
【发布时间】:2017-04-05 10:36:42
【问题描述】:

我正在尝试使用 JavaScript 验证验证码。但我找不到任何关于验证码客户端 API 的资源。你有任何文件吗?

【问题讨论】:

    标签: javascript captcha


    【解决方案1】:

    如果您可以通过 JavaScript 验证验证码,这意味着在您传递给客户端的代码中很容易找到有效代码的方法,这将有效地使验证码无效完全用于验证码。

    实现此目的的唯一安全方法是将 AJAX 请求发送到服务器,然后服务器将验证代码。这样,您的验证将完全按照您通常在服务器上验证验证码的方式完成。

    【讨论】:

    • 还值得注意的是,每次验证尝试失败后都应刷新/重置验证码。
    【解决方案2】:

    使用 javascript 验证验证码意味着您需要在 html 源代码中显示验证码文本的一些表示形式,这对机器人自动可见。

    如果您绝对必须使用 javascript 进行验证,我认为一种可能性是对您的验证码文本服务器端进行散列,将其加载到 javascript 变量中,然后使用等效的 javascript 散列函数进行验证。

    【讨论】:

    • 您可以使用 AJAX,这样您就不必将文本存储在客户端上。
    • 问题是,如果机器人可以调用有效的事件/函数,则 JS 将调用什么事件/函数而无需测试验证码
    【解决方案3】:

    使用 JavaScript 验证 CAPTCHA 是个坏主意,因为机器人可以轻松击败 CAPTCHA。如果您的意思是要进行 Ajax 调用以提交稍有不同的输入文本。

    【讨论】:

      【解决方案4】:

      你可以使用它,它的工作原理非常简单

      myFunction();
      var val=[];        
      val.push("VQ7W3");     /** push value in this array  */
      val.push("A1234");     /** To maintain image order here   */
      val.push("A32BD");   /** if first image 0_capt.jpeg contains value VQ7W3 so push this value into zero(0) index of array   */
      val.push("LD673");
      val.push("PQ78V");
      val.push("MX81W");
      var x;
      /**This below method generate random number from 0-5
       * name of image starts with that number will set on 
       * captcha location 
       */
      function myFunction() {
          x = Math.floor(Math.random() * 6);     // here 6 stand for how many images you are using return 0-6 number.
      	$("#imgCaptchaPlace").html("<img id='abc' src='captcha_images/"+x+"_cpt'/>")  ;   
      }
      
      /**
       * This below method will call on change of input fields where user enter
       * captcha code value
       */
      function chaeckCpatch(id)
      {
      		if($("#"+id).val()==val[x])
      		{
      				alert("match");
      		}
      		else
      		{
      			alert("No match");
      		}
      	
      }
        
      <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
      <html>
      <head>
      </head>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
      <body>
      <!--  below div use to display captcha image -->
      <div id="imgCaptchaPlace"></div>
      
      <!-- below textfield where user enter captcha value -->
      <input type="text" id="captchaText" onchange="chaeckCpatch(this.id);"/>
      
      <!-- include this JS file -->
      <script src="captchByAarif.js" type="text/javascript"></script>
      </body>
      </html>

      您可以在此处下载此示例中使用的验证码图片

      https://github.com/aarifa-ds/Captcha-Code

      【讨论】:

        【解决方案5】:

        只是作为概念证明...... 如果您将验证码字符串的 HASH 发送到浏览器。您可以动态散列用户输入的字符串,然后比较两个字符串。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-11-10
          • 2011-08-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多