簡體   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