как сделать форму входа в 3 попытки, используя javascript, проверив сохраненное значение cook ie и ответ ajax - PullRequest
0 голосов
/ 10 апреля 2020
i want to make a 3 attempts login form by storing username and password inside cookies and then check it with the ajax response values. if it matched login succesfull otherwise allow 2 more attempts and finally blocked. my code segment is here 

    <input type="hidden" id="attempt" value="3">
<p id="footer"></p>
<script type="text/javascript">
while(1)
{
    var d_name=prompt("username","done");
    if(d_name != "")
        var d_password=prompt("password","done");
   document.cookie = "name="+d_name;
    document.cookie = "password="+d_password;
    var attempt = document.getElementById("attempt").value;
    if(d_name != "" && d_password != "")
    {
$.ajax({
    type:'post',
    url: "<?php echo base_url(); ?>",
    data:{
        d_name:d_name,
        d_password:d_password
    },
    dataType:"json",
    success: function(result) {
        var u = result[0].d_name; 
        var v = result[0].d_password; 
        alert(u);
    },
error: function(result) { console.log(result); }
 });
        if (document.cookie['name'] == 'u' && document.cookie['password'] == 'v') 
        {
            alert('success'); 
            break;
        }       
        else
        {
            document.getElementById("attempt").value = attempt -1;
            alert("You have left "+(attempt-1)+" attempt;");
            attempt = attempt - 1;
            if( attempt == 0)
            {
                alert('you are blocked'); 
                break;
            }
        }
    }
}

я хочу проверить свое имя пользователя и пароль для входа в систему, сохраненные в файлах cookie document.cookie ['name'] и document.cookie ['password'] с ajax значениями ответов, сохраненными в переменных u и v.Если проверка В противном случае успешное перенаправление разрешает еще 2 попытки. Даже после сбоя блокируется.

1 Ответ

1 голос
/ 10 апреля 2020

Это очень плохой способ аутентификации пользователя. Во-первых, Javascript не должен иметь доступа к серверным данным Cook ie, особенно тем, которые связаны с аутентификацией.

Во-вторых, аутентификация через Javascript обычно не одобряется, так как код может быть изменен в непредсказуемые способы со стороны клиента. В частности, хранение таких значений, как попытка остаться в Javascript, очень опасно, поскольку любой может сделать неограниченное количество попыток.

Наконец, клиенту никогда не следует давать пароль, даже хешированный пароль. , Все, что потребуется, - это быстрое редактирование DOM с помощью alert(document.cookie['password']);, и любой посетитель вашего сайта сразу узнает, какой пароль.

Пожалуйста, обратитесь к этой статье (спасибо @ Baracuda078) о форма безопасного входа в систему с паролем.

Что касается фактического отслеживания количества входов в систему, то самый простой способ - использовать PHP переменные сеанса для хранения количества попыток входа пользователя в систему. c объяснение сессий можно найти здесь .

Например, в файле PHP:

session_start();
if(!isset($_SESSION['auth_attempts'])){
    $_SESSION['auth_attempts'] = 0;
}
else if($_SESSION['auth_attempts'] > 3){ // More than 3 attempts
    // Handle however you wish
}

Каждый раз, когда форма отправляется и PHP выполняется с шагом $_SESSION['auth_attempts'] на 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...