Javascript Captcha - PullRequest
       11

Javascript Captcha

0 голосов
/ 27 сентября 2011

Я нашел этот замечательный маленький код в сети, но он не сравнивает две строки после правильного удаления пробелов? Я знаю кое-что, но все, что здесь не так, за пределами моего понимания. Надеюсь, кто-нибудь узнает ответ на этот вопрос.

Примечание: кажется, что он также проверяется на основе количества chs, а не того, что это за chs, цифры не должны совпадать, лишь бы их было достаточно.

Код организации был создан " mama21mama " из "http://osticket.com/forums/showthread.php?t=6489&highlight=captcha"

Я сделал несколько небольших личных изменений, чтобы попытаться это исправить, ниже мой 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>

1 Ответ

9 голосов
/ 27 сентября 2011

Не используйте этот код. Это ничего не делает для повышения безопасности.

Для того, чтобы капча была эффективной, ответ на капчу должен быть секрет, известный только серверу. Клиентский скрипт не может реализовать капчу, потому что клиентский код обязательно будет знать ответ.

Этот скрипт ничего не делает дляЗащитите свой сервер от злонамеренной атаки.Весь JavaScript в мире не мешает злоумышленнику написать скрипт, который POST является поддельной формой для вашего сервера.Так как проверка подлинности капчи происходит на клиенте, ваш сервер не знает, был ли запрос сгенерирован законно человеком.

Эта капча также пропускает суть, представляя вызов в виде простого текста.Любой сценарий может прочитать запрос из DOM и предоставить правильный ответ.

Этот сценарий бесполезен, если в браузере отключен JavaScript.Этот сценарий бесполезен, если я наберу ValidCaptcha = function() { return true; } в консоли.

Вместо того, чтобы пытаться свернуть свой собственный, используйте reCAPTCHA .Он бесплатный, имеет простой API и имеет встроенные возможности для слепых пользователей.

...