Каковы причины неиспользования лимита на странице входа

Я видел несколько злоумышленников, атакующих мой сайт, и я узнал от одного пользователя, что это связано с тем, что я не установил ограничение на свой login page. люди могут пытаться войти столько раз, сколько захотят. Я хочу знать, как предотвратить это и что они используют для этого? так что я могу попробовать и проверить мой сайт. И, пожалуйста, скажите мне хорошее решение.

Я использую язык php

HTML

<form action="login.php" method="post">
    <div class="row">
        <span id="other-info-font" class="label">Username:<br />or email:</span>
    <span class="formw"><input type="text" name="username" value="<?php echo $username; ?>" size="25" /></span>
    </div>
    <div class="row">
        <span id="other-info-font" class="label">Password:</span>
    <span class="formw"><input type="password" name="password" value="<?php echo $password; ?>" size="25" /></span>
   </div>
    <div class="lo-button">
         <input class="white" type="submit" value="Login" name="submit-login" />
    </div>                      
</form>

PHP

require_once 'include/global.php';

$error = "";
$username = "";
$password = "";


//check to see if they've submitted the login form
if(isset($_POST['submit-login'])) { 

    $username = $_POST['username'];
    $password = $_POST['password'];

    $LoginTool = new Tools();
    if($LoginTool->login($username, $password)){
        //successful login, redirect them to a page
        header("Location: index.php");
    }else{
        $error = "Incorrect username or password. Please try again.";
    }
}

person PimZaa    schedule 10.06.2013    source источник


Ответы (1)


Первое, что вы можете сделать, это создать «фиктивные» поля ввода для входа в систему, а затем переименовать ваши настоящие поля имени пользователя и пароля во что-то менее ожидаемое. Тогда ваша логика входа будет ссылаться на новые имена переменных.

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

Третье, что вы, возможно, захотите рассмотреть, — это создание таблицы черного списка IP-адресов. На самом деле я задал вопрос относительно этого некоторое время назад, но, подытоживая, он предназначен автоматически отклонять попытки входа с IP-адресов, которые слишком быстро терпят неудачу.

Ваш код может выглядеть примерно так:

require_once 'include/global.php';

$error = "";
$username = "";
$password = "";

//check to see if they've submitted the login form
if(isset($_POST['submit-login']) 
       && isset($_POST['emanresu']) 
       && strlen($_POST['emanresu']) > 0)
{
    $username = $_POST['emanresu'];
    $password = $_POST['drowssap'];

    $LoginTool = new Tools();
    if($LoginTool->login($username, $password))
    {
        //successful login, redirect them to a page
        sleep(1);
        header("Location: index.php");
        exit();
    }
    else
    {
        sleep(4);
        $error = "Incorrect username or password. Please try again.";
    }
}
else if(isset($_POST['username']) && strlen($_POST['username']) > 0)
{
    // Either autocomplete filled in a username in the wrong place or 
    //   a tool automatically scanned for 'username' and filled it in.
    //   In either case, sleep for four seconds.
    sleep(4);
    $error = "Sorry, there was a problem with the login attempt. Please try again.";
}

...

<form action="login.php" method="post">
    <div style="display:none"><input type="text" name="username" /><input type="text" name="password" /></div>
    <div class="row">
        <span id="other-info-font" class="label">Username:<br />or email:</span>
    <span class="formw"><input type="text" name="emanresu" value="" size="25" /></span>
    </div>
    <div class="row">
        <span id="other-info-font" class="label">Password:</span>
    <span class="formw"><input type="password" name="drowssap" value="" size="25" /></span>
   </div>
    <div class="lo-button">
         <input class="white" type="submit" value="Login" name="submit-login" />
    </div>
</form>
person Chris Forrence    schedule 10.06.2013
comment
Я не уверен, поможет ли это мне, но я исправлю код по-вашему. посмотрим, поможет ли это. у меня нет собственных инструментов для проверки взлома, поэтому я не уверен, поможет это или нет :) - person PimZaa; 10.06.2013
comment
Во всяком случае, пользователи, вероятно, смогут удерживать клавишу ввода и попытаться войти в систему! - person Chris Forrence; 10.06.2013
comment
я понятия не имею, пытаясь понять это, все, что вы опубликовали @ChrisForrence, СПАСИБО - person PimZaa; 10.06.2013